【(a+b)%d=(a%d+b%d)%d】poj 2551 Ones
来源:互联网 发布:自定义域名邮箱 编辑:程序博客网 时间:2024/06/07 14:07
网上有一个很好的方法,大概的思想就是
11...11(n个1)的余数=11..1(n-1个1)的余数*10+1。。。
发现聪明人还是多的,他们的详细思路是:
只用余数乘以10+1就可以了。。。
如:3 满足题意能除以它的最小数111 , 答案是3
分析:1%3*10+1=11 j = 1
11%3*10+1=21 j =2
21%3=0 j=3
相当于:1%3
11%3
111%3
其实就是验证 (n%t*10+1)%t 的结果和 (n*10+1)%t 的结果是否一致,n不一定是111..1,经验证,真的是一样的,代码附后,在简化就是 (n%t*10)%t 和 (n*10)%t 的结果一样。。
经验证,这里的10可以为任何正整数。。。其实把n拆成两个数就可以理解了 x+y,x可以被t整除,y是余数
原理就是(a+b)%d=(a%d+b%d)%d
#include"stdio.h"int main(){int n;int i;int tmp;while(~scanf("%d",&n)){tmp=1;for(i=1; ;i++){if(tmp%n==0)break;tmp=tmp%n*10+1;}printf("%d\n",i);}return 0;}
验证代码:
#include"stdio.h"int main(){int n;int t;while(~scanf("%d%d",&n,&t)){printf("%d\n",(n%t*10+1)%t);printf("%d\n",(n*10+1)%t);}return 0;}
0 0
- 【(a+b)%d=(a%d+b%d)%d】poj 2551 Ones
- (a*b)%d=(a%d*b%d)%d
- a+++b+c+++d++
- a/b + c/d
- while(~scanf("%d %d",&a,&b))和while(scanf("%d %d",&a,&b)!=EOF)
- while(~scanf("%d %d",&a,&b))和while(scanf("%d %d",&a,&b)!=EOF)
- printf("%d%d%d%d\n", a,b,c);
- HDUOJ2503 a/b + c/d
- 翡翠 A, B, C, D
- HDU2503:a/b + c/d
- unsigned a,b,c,d;
- 【#253_DIV2】-A B D
- hdu2053 a/b + c/d
- hdu2503 a/b + c/d
- hduoj2503(a/b + c/d)
- HDU2503:a/b + c/d
- hdu2503:a/b + c/d
- HDU2503 a/b + c/d
- 微铺子:见证微信订餐平台的成长
- .NET截取指定长度汉字超出部分以"..."代替
- 关于linux 的启动
- Vim教程,目前见过最全的。
- CRC出版社 2014 -2015 R新书介绍
- 【(a+b)%d=(a%d+b%d)%d】poj 2551 Ones
- 三兄弟旗舰版TI28335DSP—核心板GPIO电灯操作—CCS6
- [综合面试] 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结
- 同余问题之模方程模板
- linux 下查看机器cpu是几核的
- Cocos2d-x 3.1.1 学习日志17--移植出现error C1083: 无法打开包括文件:“extensions/ExtensionMacros.h”: No such file or
- 不痛不痒之热血青年《一》
- iOS学习笔记---UIAlertView 使用及代理
- centos系统上程序打包