链接:​​https://ac.nowcoder.com/acm/contest/342/A​

来源:牛客网




筱玛的快乐




时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 524288K,其他语言1048576K

64bit IO Format: %lld


题目描述



筱玛是个快乐的男孩子。

寒假终于到了,筱玛决定请他的朋友们一起来快乐。

对于筱玛来说,最快乐的事情莫过于翻看万年历上的日期了。

一个日期是“快乐”的,当且仅当这一年的年份是一个质数,且将月份、日期写成"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≤10

6

保证答案存在且答案年份为4位数。
题意:中文题面,读起来没问题吧?
思路:寻找规律,然后预处理2000~9999的素数,然后直接输出。
这题卡IO,,很无语,要用scanf和printf才能过,然而我用的快读。
我的AC代码:



#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <vector>
#define sz(a) int(a.size())
#define all(a) a.begin(), a.end()
#define rep(i,x,n) for(int i=x;i<n;i++)
#define repd(i,x,n) for(int i=x;i<=n;i++)
#define pii pair<int,int>
#define pll pair<long long ,long long>
#define gbtb ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define MS0(X) memset((X), 0, sizeof((X)))
#define MSC0(X) memset((X), '\0', sizeof((X)))
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define gg(x) getInt(&x)
using namespace std;
typedef long long ll;
inline void getInt(int* p);
const int maxn=1000010;
const int inf=0x3f3f3f3f;
/*** TEMPLATE CODE * * STARTS HERE ***/
bool ispreme(int x)
{
for(int i=2;i<x;i++)
{
if(x%i==0)
{
return 0;
}
}
return 1;
}
char m[50][50]={"12-21","01-10","02-20","03-30","10-01","11-11"};
int main()
{

vector<int> v;
repd(i,2000,9999)
{
if(ispreme(i))
{
v.pb(i);
// cout<<i<<" ";
}
}
int t;
gg(t);
int k;
while(t--)
{
gg(k);
int year=v[(k-1)/6];
k=k%6;
// cout<<year<<"-"<<m[k]<<endl;
printf("%d-%s\n",year,m[k]);
}
return 0;
}

inline void getInt(int* p) {
char ch;
do {
ch = getchar();
} while (ch == ' ' || ch == '\n');
if (ch == '-') {
*p = -(getchar() - '0');
while ((ch = getchar()) >= '0' && ch <= '9') {
*p = *p * 10 - ch + '0';
}
}
else {
*p = ch - '0';
while ((ch = getchar()) >= '0' && ch <= '9') {
*p = *p * 10 + ch - '0';
}
}
}