Information
- ID
- 284
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 4
- Tags
- # Submissions
- 84
- Accepted
- 39
- Uploaded By
用a从高到低的每一位加上前一位余数*10来对b进行%,最后得到的结果就是a%b的结果
#include<stdio.h>
const int N = 1e3+7;
int b;
char a[N];
int divMod()
{
int s = 0;
for(int i=0;a[i]!='\0';i++)
s = (s*10+a[i]-'0')%b;
return s;
}
int main()
{
while(~scanf("%s %d",a,&b))
{
int num = divMod();
printf("%d\n",num);
}
return 0;
}
我写的代码比较麻烦,斗胆贴出来,思路就是把大数切成几段,按同余的公式通过加乘等手段将结果余出来
#include<iostream>
#include<cstring>
using namespace std;
const int N=1007;
char a[N];
long long int ans,b;
int main(){
while(cin>>a){
ans=0;
cin>>b;
int n=strlen(a);
for(int i=0;i<n;i++){
long long int k=(a[n-i-1]-'0');
long long int l=1;
long long int j=i;
while(j>0){
if(k<100000)k*=10;
else l*=10;
if(l==100000){
k*=(l%b);
k%=b;
l=1;
}
j--;
}
k=(k%b)*(l%b);
ans+=k;
ans%=b;
}
printf("%lld\n",ans);
}
return 0;
}
By signing up a 追梦算法网 universal account, you can submit code and join discussions in all online judging services provided by us.