大整数取模
例题: 大整数取模
输入正整数n和m,输出n mod m的值。n<=10^100,m<=10^9.
分析:
首先,把大整数写成“自左向右”的形式:1234=((1*10+2)*10+3)*10+4,然后用前面的公式,每步取模。
View Code
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int main() { char n[200]; int m; scanf("%s %d",n,&m); int len=strlen(n); int ans=0; for(int i=0; i<len; i++) ans=(int)(((long long)ans*10 + (n[i]-'0')) % m); printf("%d\n",ans); return 0; }
当然了,也可以把ans声明成long long 类型,然后在输出时转换为int ,但千万要注意乘法溢出的问题。