牛客练习赛37 A-筱玛的快乐

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;
} 

猜你喜欢

转载自blog.csdn.net/weixin_43821944/article/details/86350177