第六届省赛J题 single round math

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/AC_jie/article/details/79516537

解题的逻辑在于先判断相等,然后就是判断这个数是否可以被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 .

猜你喜欢

转载自blog.csdn.net/AC_jie/article/details/79516537