第六届省赛J题 single round math
2018-03-11 15:06
288 查看
解题的逻辑在于先判断相等,然后就是判断这个数是否可以被11整除.
由于这个数很大,很容易就想到了同余定理.就是怎么样用的问题了.
第一 首先想到的是我之前看过一个结论就是关于可以被11 整除的数,每位数之间是有关系的
按照这个经验了一下就发现了,奇数位上之和和偶数位上之和之差可以被11整除
第二 大数取模的思想.这个实在网上看的.来说一下.
类似于秦九召算法,的原理就是递归的思想利用同余定理.
(1)大数存储:由于x的位数最大为400位,我们不能用现有的int,long,long long,double等数据类型进行存储。一般存储大数的方法是用一个字符串来表示。
(2)取模运算:模拟手算竖式的方法。用x从高到低的每一位加上前一位余数*10来对bi进行%,最后得到的结果就是x%bi的结果。
利用到公式:(a+b) mod (n) = (a mod n) + (b mod n) mod (n);
1 %m = 1
12 % m = ( 1 * 10 + 2 ) % m = ( 1 % m * 10 + 2 ) % m
123 % m = ( 12 * 10 + 3) % m = ( 12 % m * 10 + 3) % m
…
12345678901234567890 % m =(( 1 % m * 10 + 2 ) % m * 10 + 3 ) % m…
这部分转载自
http://blog.csdn.net/wu_cai_/article/details/44536271
第三个方法就是java .
由于这个数很大,很容易就想到了同余定理.就是怎么样用的问题了.
第一 首先想到的是我之前看过一个结论就是关于可以被11 整除的数,每位数之间是有关系的
按照这个经验了一下就发现了,奇数位上之和和偶数位上之和之差可以被11整除
第二 大数取模的思想.这个实在网上看的.来说一下.
类似于秦九召算法,的原理就是递归的思想利用同余定理.
(1)大数存储:由于x的位数最大为400位,我们不能用现有的int,long,long long,double等数据类型进行存储。一般存储大数的方法是用一个字符串来表示。
(2)取模运算:模拟手算竖式的方法。用x从高到低的每一位加上前一位余数*10来对bi进行%,最后得到的结果就是x%bi的结果。
利用到公式:(a+b) mod (n) = (a mod n) + (b mod n) mod (n);
1 %m = 1
12 % m = ( 1 * 10 + 2 ) % m = ( 1 % m * 10 + 2 ) % m
123 % m = ( 12 * 10 + 3) % m = ( 12 % m * 10 + 3) % m
…
12345678901234567890 % m =(( 1 % m * 10 + 2 ) % m * 10 + 3 ) % m…
int divMod(char* ch,int num) { int s = 0; for(int i=0;ch[i]!='\0';i++) s = (s*10+ch[i]-'0')%num; return s; }
这部分转载自
http://blog.csdn.net/wu_cai_/article/details/44536271
第三个方法就是java .
相关文章推荐
- 2015山东省第六届ACM省赛 Single Round Math
- 第六届山东省ACM竞赛 J题 Single Round Math
- 山东省第六届ACM大学生程序设计竞赛-Single Round Math(大数除法)
- sdut 3260 Single Round Math 模拟
- Single Round Math sdut3260高精度除以低精度
- Single Round Math
- sdut3260——Single Round Math(大数模)
- Single Round Math
- Math.ceil() 、Math.floor() 、Math.round() 三个函数的理解
- [转]Math中floor,round和ceil的区别
- Single Round Match
- C# 中的四舍五入算法及 MSDN 2005 中文版 Math.Round 勘误 .
- java Math.round()比较特殊的四舍五入
- Java Math.round()函数小结
- 湖南省第六届省赛 E 内部收益率
- Single Round Match 573 Round 1 - Division I, Level Two SkiResorts
- Math.round()
- Math.round()函数使用
- 关于Java中if else,Math.round()方法的总结
- Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?