你知道这个规律吗?
1000 ms | 内存限制: 65535
2
描述,链接: click here
输入 :a,b;
输出
输出 :输出a%b。
样例输入
10 4 1333333333 2
样例输出
2 1
#include <stdio.h>
#include <string.h>
char STR[100000];
int main()
{
int sum,n,i;
while(scanf("%s %d",STR,&n)==2)
{
int len=strlen(STR);
for(i=0,sum=0; i<len; i++)
{
sum=sum*10+STR[i]-48;
if(sum>=n) sum=sum%n;
}
printf("%d\n",sum);
}
return 0;
}
1 余数始终为 0
2 10%2=0,偶数为0;奇数为1
3 10%3=1,各位数数字累加再取3的余数
4 100%4=0,故取末两位数对4的余数
5 10%5=0,故取个位数对5的余数
6 分别计算对2、3的余数,再孙子定理
7 10^6%7=1,故从后向前每6位分段累加再取7的余数
8 1000%8=0,故取末三位数对4的余数
9 10%9=1,各位数数字累加再取9的余数
根据此,另一只解法:
#include<iostream>
#include<fstream>
#include<algorithm>
#include<sstream>
#include<vector>
using namespace std;
int main()
{ string s;
int a;
while( cin>>s>>a)
{
if(a==1)
cout<<1<<endl;
else if(a==2)
cout<<(s[s.length()-1]-'0')%2<<endl;
else if(a==3)
{
int sum=0;
for(int i=0; i<s.length(); i++)
sum+=(s[i]-'0');
cout<<sum%3<<endl;
}
else if(a==4)
{
if(s.length()==1)
cout<<(s[s.length()-1]-'0'%4)<<endl;
else
cout<<((s[s.length()-1]-'0')+(s[s.length()-2]-'0')*10)%4<<endl;
}
else if(a==5)
cout<<(s[s.length()-1]-'0')%5<<endl;
else if(a==6)
cout<<((s[s.length()-1]-'0')+(s[s.length()-2]-'0')*4)%6<<endl;
else if(a==7)
{
int m=0;
for (int j=0; j<s.length(); j++)
{
m=(m*3+(s[j]-'0'))%7;
}
cout<<m<<endl;
}
else if(a==8)
{
if(s.length()<3)
cout<<atoi(s.c_str())%8<<endl;
else
cout<<((s[s.length()-1]-'0')+(s[s.length()-2]-'0')*10+(s[s.length()-3]-'0')*100)%8<<endl;
}
else if(a==9)
{
int sum1=0;
for(int i1=0; i1<s.length(); i1++)
sum1+=(s[i1]-'0');
cout<<sum1%9<<endl;
}
}
}