您的位置:首页 > 其它

第六届省赛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…

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 .
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: