A-筱玛的快乐
链接:https://ac.nowcoder.com/acm/contest/342/A
来源:牛客网
题目描述
筱玛是个快乐的男孩子。
寒假终于到了,筱玛决定请他的朋友们一起来快乐。
对于筱玛来说,最快乐的事情莫过于翻看万年历上的日期了。
一个日期是“快乐”的,当且仅当这一年的年份是一个质数,且将月份、日期写成"MM-DD"的形式后是对称的。如:"2003-01-10"是“快乐”的。
筱玛有n个小伙伴,每个小伙伴都会提出一个问题,即:从"2000-01-01"这一天开始,第k个“快乐”的日期是什么。
输入描述:
第一行一个整数n。 接下来n行,每行一个数字k,表示一次询问。
输出描述:
输出共n行,每行一个形如"YYYY-MM-DD"的日期表示答案。
示例1
输入
3
1
23
48
输出
2003-01-10
2027-11-11
2063-12-21
备注:
1≤n≤106 保证答案存在且答案年份为4位数。
题目分析
当且仅当这一年的年份是一个质数,且将月份、日期写成"MM-DD"的形式后
由这句话我们可以得出两个条件:
1.年份为质数(可有打表获得数据在2000~10000)
2.月份日期对称,很容易想出符合条件的为0110,0220,0330,1001,1111,1221;
代码
#include<stdio.h>
int z(int n)
{
int i;
for(i=2;i<n;i++)
if(n%i==0) return 0;
return 1;
}
int main()
{
int n,i,j=0,c[1000]={0};
int a[6]={12,1,2,3,10,11},b[6]={21,10,20,30,01,11};
scanf("%d",&n);
for(i=2000;i<=10000;i++)
if(z(i)==1)
{
c[j]=i;j++;
}
while(n--)
{
int k,q ;
scanf("%d",&k);
q=k/6;
if(k%6==0) q--;
printf("%d-%02d-%02d\n",c[q],a[k%6],b[k%6]);
}
return 0;
}