NYOJ 求余数

来源:互联网 发布:windows系统开发语言 编辑:程序博客网 时间:2024/05/12 23:10

求余数

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
描述
现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数除10003之后的余数
输入
第一行有一个整数m(1<=m<=8),表示有m组测试数据;
随后m行每行有一个自然数n。
输出
输出n整除10003之后的余数,每次输出占一行。
样例输入
345465456541
样例输出
456948
来源
经典题目
上传者
张云聪

大数取模运算:
对于一个大数求其%N 的值,例如求1234 可以写成 1*1000+2*100+3*10+4 =((1*10)+2)*10+3)*10+4  所以 1234%N=(((1*10)%N+2)*10%N+3)*10%N+4%N
程序关键点:
设一整型数据ans存储结果  ans=0;
ans=(ans*10+a[i])%N  (a[i] 代表数据每个位上的数据)
#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>#define MAX 1000005#define N 10003using namespace std;char num[MAX];int main(){int m; scanf("%d",&m);while(m--){scanf("%s",num);int len=strlen(num);int ans=0;for(int i=0;i<len;i++){ans=(int)((ans*10+(num[i]-'0'))%N);}printf("%d\n",ans);}}


0 0
原创粉丝点击