您的位置:首页 > 其它

[BZOJ2296]随机种子

2016-04-25 11:48 120 查看
给出一个范围在[0,1e6]的数n,需要构造一个数m,使得m是n的倍数,m属于[0,1e16]且m包含[0,9]的所有数字

若不存在,输出-1

当n=0时输出-1

当n属于[1,1e6)时

  m=(9876543210*1e5+n)-(9876543210*1e5+n)%n

  这样,这个数的前10位不会改变,所以保证有[0,9],又减去了模n的余数于是可以被整除,位数正好

当n=1e6是用上述构造方法位数会超,然而只用输出9876543210*1e5就行了,,,

#include<bits/stdc++.h>
using namespace std;
const long long Must=9876543210000000;
int main(){
int T;
long long n;
scanf("%d",&T);
while(T--){
scanf("%lld",&n);
if(!n)puts("-1");
else printf("%lld\n",(Must+n)-(Must+n)%n);
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: