1. 程式人生 > >牛客練習賽37 A-筱瑪的快樂

牛客練習賽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;
}