描述
现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数除10003之后的余数
-
输入
-
第一行有一个整数m(1<=m<=8),表示有m组测试数据;
随后m行每行有一个自然数n。
输出
- 输出n整除10003之后的余数,每次输出占一行。 样例输入
-
3 4 5 465456541
样例输出
-
4 5 6948
大数求余数问题,输入的数据要用字符串处理。
思路:例如要求12345的余数。即:求12345%MOD是多少。
原式等于:
((1*10000)+(2*1000)+(3*100)+(4*10)+5)
((((((((0*10)+1)*10)+2)*10+3)*10+4)*10)+5)
根据同余定理得:
int ans = 0;
for(int i=0 ;i<s.length();i++)
ans =((ans*10)+s[i]-'0')%MOD;
AC代码:
#include<iostream>
#include<string>
#include<cstring>
#define MOD 10003
using namespace std;
int n;
string s;
int main(){
cin>>n;
while(n--){
cin>>s;
int ans = 0;
for(int i=0 ;i<s.length();i++)
ans =((ans*10)+s[i]-'0')%MOD;
cout<<ans<<endl;
}
return 0;
}