描述
求a%b的值
输入
第一行一个整数T,表示接下来有T行
每行两个整数是a,b,(0<=a<=10^10000,1<b<1000000000)
输出
输出值
输入样例 1
2
1 2
11111111111111111111111111110 2
输出样例 1
1
0
这题呢是一个字符串和整数的取余,取余的话主要还是除法的操作,由于除数上限过大(1e10000)所以使用字符串,除法的机制是从最大位开始取数字,然后除,每一次取得的数据都是余数乘10再附加的数据,比如123/3,第一次取得的为1+0*10,余数为1,第二次取得的是2+1*10,余数为0,第四次取得的数是3+10*0余数为0所以123/3=41,123%3=0,在除法的时候就求出来余数,所以我们只需要利用这个机制即可。
#include <iostream>
#include <cmath>
#include <string>
using namespace std;
long long remainder (string a,long long b)
{
long long r=0,temp=0;
for(int i=0; i<a.size(); i++)
{
temp=r*10+(a[i]-'0');
if(temp>=b)
r=temp%b;
else
{
if(a.size()==1)
{
r=a[i]-'0';
break;
}
r=temp;
}
}
cout<<r<<endl;
}
int main()
{
char s[10001];
int T;
long long h;
while(cin>>T)
{
while(T--)
{
cin>>s>>h;
remainder(s,h);
}
}
return 0;
}