链接:https://ac.nowcoder.com/acm/contest/342/A
来源:牛客网
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 524288K,其他语言1048576K
64bit IO Format: %lld
空间限制:C/C++ 524288K,其他语言1048576K
64bit IO Format: %lld
题目描述
筱玛是个快乐的男孩子。
寒假终于到了,筱玛决定请他的朋友们一起来快乐。
对于筱玛来说,最快乐的事情莫过于翻看万年历上的日期了。
一个日期是“快乐”的,当且仅当这一年的年份是一个质数,且将月份、日期写成"MM-DD"的形式后是对称的。如:"2003-01-10"是“快乐”的。
筱玛有n个小伙伴,每个小伙伴都会提出一个问题,即:从"2000-01-01"这一天开始,第k个“快乐”的日期是什么。
寒假终于到了,筱玛决定请他的朋友们一起来快乐。
对于筱玛来说,最快乐的事情莫过于翻看万年历上的日期了。
一个日期是“快乐”的,当且仅当这一年的年份是一个质数,且将月份、日期写成"MM-DD"的形式后是对称的。如:"2003-01-10"是“快乐”的。
筱玛有n个小伙伴,每个小伙伴都会提出一个问题,即:从"2000-01-01"这一天开始,第k个“快乐”的日期是什么。
输入描述:
第一行一个整数n。
接下来n行,每行一个数字k,表示一次询问。
输出描述:
输出共n行,每行一个形如"YYYY-MM-DD"的日期表示答案。
备注:
1≤n≤106
保证答案存在且答案年份为4位数。
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 #define Max 11000 6 bool prime[Max]={0}; 7 8 void IsPrime(){ 9 for(int i=2;i*i<Max;i++){ 10 if(prime[i]==0){ 11 for(int j=i*i;j<Max;j+=i){ 12 prime[j]=1; 13 } 14 } 15 } 16 } 17 18 void calprimeryear(vector<int> &vi1){ 19 for(int i=2001;i<=10000;i++){ 20 if(prime[i]==0){ 21 vi1.push_back(i); 22 } 23 } 24 } 25 26 int main() 27 { 28 char vs1[7][7]={"01-10","02-20","03-30","10-01","11-11","12-21"}; 29 vector<int> vi1; 30 IsPrime(); 31 calprimeryear(vi1); 32 int n,k; 33 scanf("%d",&n); 34 while(n--){ 35 scanf("%d",&k); k--; 36 printf("%d-%s ",vi1[k/6],vs1[k%6]); 37 } 38 return 0; 39 }