HDU 1212 大整数的取模运算

因为这里是MOD最大为100000

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

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

注意过程中 100000*100000会超int

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
#define ll long long
int b;
char s[]; int main()
{
// freopen("a.in" , "r" , stdin);
while(~scanf("%s%d" , s , &b))
{
int len = strlen(s);
int p = len- , t = ; //t表示后面要乘几次100000
int cur = ;
while(p >= ){
ll num = , mul = ;
for(int i = ; i<&&p>= ; i++){
num += mul * (s[p] - '');
mul *= ;
p--;
}
// cout<<"num: "<<num<<endl;
num = num % b;
for(int i = ; i<=t ; i++){
num *= ;
num %= b;
}
num += cur;
num %= b;
cur = num;
t++;
}
printf("%d\n" , cur);
}
return ;
}
上一篇:用javascript实现控制一个文本框的输入字数限制,超出字数限制文本框飘红显示-面试题


下一篇:大组合数取模之lucas定理模板,1<=n<=m<=1e9,1