大整数取模

例题: 大整数取模
输入正整数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 ,但千万要注意乘法溢出的问题。
posted @ 2012-08-13 14:50  luosw  阅读(515)  评论(0编辑  收藏  举报