首页 > 其他 > 详细

[BZOJ2296]随机种子

时间:2016-04-25 13:06:45      阅读:244      评论:0      收藏:0      [点我收藏+]

给出一个范围在[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就行了,,,

技术分享
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const long long Must=9876543210000000;
 4 int main(){
 5     int T; 
 6     long long n;
 7     scanf("%d",&T);    
 8     while(T--){
 9         scanf("%lld",&n);
10         if(!n)puts("-1");
11         else printf("%lld\n",(Must+n)-(Must+n)%n);
12     }
13     return 0;
14 }
View Code

 

[BZOJ2296]随机种子

原文:http://www.cnblogs.com/Ngshily/p/5430375.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!