首页 > 代码库 > zoj 3622 Magic Number 【规律】
zoj 3622 Magic Number 【规律】
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3622
题目大意:
如果一个数字x满足如下条件:
任意加一个数字y在x的左边,都能是yx是x的倍数,比如1满足,2满足,5满足条件。
然后最开始以为1 2 5 的十倍数10 20 50 , 100 200 500 以及很多,然后后来发现了一个bug就是25 ,发现找的规律是有问题的。
后来发现是10 100 1000 10000 分别除以1 2 3 4 5 6 7 8 9 ,
如果余数是0,那说明商是满足条件的。
比如10为被除数时候 10 5 2 1
比如100为被除数时候 100 50 25 20 10 满足条件
规律就是上面那样。直接找出所有符合条件的然后一遍查找就可以了。
ll a[1000000]; int main(){ ll i,j,n,m; ll cnt = 0; for(i=10;i<=100000000000LL;i*=10){ for(j=10;j>=1;j--){ if(!(i%j)){ if(i/j==a[cnt-1]) continue; a[cnt++] = i / j; //cout<<a[cnt-1]<<endl; } } } while(scanf("%lld%lld",&n,&m)!=EOF){ int sum = 0; for(i=0;i<cnt;i++){ if(a[i]>=n&&a[i]<=m) sum++; if(a[i]>m) break; } printf("%d\n",sum); } return 0; }
zoj 3622 Magic Number 【规律】
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。