码迷,mamicode.com
首页 > 其他好文 > 详细

[BZOJ2296]随机种子

时间:2016-04-25 13:08:14      阅读:130      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!