【HDU】 1212 Big Number
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1212
起先一看,哦,是大数;接着再看,取模问题,而且:B will be smaller than 100000。
引起我思考最主要的原因是用大数写取模的问题我还真不太会,然后就找到了一个很有用的定理:同余定理。
百度百科的版本:
1)a≡a(mod d)
2)a≡b(mod d)→b≡a(mod d)
3)(a≡b(mod d),b≡c(mod d))→a≡c(mod d)
如果a≡x(mod d),b≡m(mod d),则
4)a+b≡x+m (mod d)
5)a-b≡x-m (mod d)
6)a*b≡x*m (mod d )
博客空间整理:
(a+b)%c=(a%c+b%c)%c;
(a*b)%c=(a%c*b%c)%c;
显然一看到人家整理好的公式,这个题目就迎刃而解了,也就不用大数那么麻烦了。
Main Code
1 int main() 2 { 3 int i, j, len, m, ans; 4 char str[1010]; 5 while(scanf("%s %d",str,&m)!=EOF){ 6 len = strlen(str); 7 ans = 0; 8 for(i=0; i<len; ++i){ 9 ans = (ans*10%m + (str[i]-'0'))%m; 10 } 11 printf("%d\n",ans); 12 } 13 return 0; 14 }

浙公网安备 33010602011771号