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 }