因为这里是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 ;
}