首页 > 代码库 > HDU 1212 大整数的取模运算

HDU 1212 大整数的取模运算

因为这里是MOD最大为100000

所以我将字符串看作5个一组,并记录后面跟了多少个100000

每次取5个数根据其数据进行取模更新

注意过程中 100000*100000会超int

#include <cstdio>#include <cstring>#include <iostream>using namespace std;#define ll long longint b;char s[1005];int main(){  //  freopen("a.in" , "r" , stdin);    while(~scanf("%s%d" , s , &b))    {        int len = strlen(s);        int p = len-1 , t = 0; //t表示后面要乘几次100000        int cur = 0 ;        while(p >= 0){            ll num = 0 , mul = 1 ;            for(int i = 0 ; i<5&&p>=0 ; i++){                num += mul * (s[p] - 0);                mul *= 10;                p--;            }          //  cout<<"num: "<<num<<endl;            num = num % b;            for(int i = 1 ; i<=t ; i++){                num *= 100000;                num %= b;            }            num += cur;            num %= b;            cur = num;            t++;        }        printf("%d\n" , cur);    }    return 0;}

 

HDU 1212 大整数的取模运算