BZOJ 2296 随机种子

【题意概述】

给出一个x(x≤10^6),求出任意一个满足十进制中包含0~9十个数字并且是x的倍数的数

【题解】

思维题。。。

我们可以强制让这个数的开头是1234567890,这个数可以表示为1234567890000000+a

那么当这个数为x的倍数时,这个数为1234567890000000+x-x%1234567890000000

 1 #include<cstdio>
 2 #include<algorithm>
 3 #define LL long long
 4 using namespace std;
 5 const LL x=1234567890000000;
 6 int T,n;
 7 void read(int &k){
 8     k=0; int f=1; char c=getchar();
 9     while (c<'0'||c>'9')c=='-'&&(f=-1),c=getchar();
10     while ('0'<=c&&c<='9')k=k*10+c-'0',c=getchar();
11     k*=f;
12 }
13 int main(){
14     read(T);
15     while (T--){
16         read(n);
17         if (n) printf("1234567890%lld\n",n-x%n);
18         else puts("-1\n");
19     }
20     return 0;
21 }
View Code
posted @ 2017-10-26 16:13  Driver_Lao  阅读(174)  评论(0编辑  收藏  举报