As we know, Big Number is always troublesome. But it's really important in our ACM. And today, your task is to write a program to calculate A mod B.
To make the problem easier, I promise that B will be smaller than 100000.
Is it too hard? No, I work it out in 10 minutes, and my program contains less than 25 lines.
Input
The input contains several test cases. Each test case consists of two positive integers A and B. The length of A will not exceed 1000, and B will be smaller than 100000. Process to the end of file.
Output
For each test case, you have to ouput the result of A mod B.
Sample Input
2 3
12 7
152455856554521 3250
Sample Output
2
5
1521
题目意思为给你两个数a和b,要求输出a%b
要注意数据范围超出了long long的范围
方法一:最简单暴力的方法就是直接上Java的BigInteger,然后一个a.remainder(b)完事
import java.util.Scanner;
import java.math.*;
public class Main{
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
while(cin.hasNext()){
BigInteger a = cin.nextBigInteger();
BigInteger b = cin.nextBigInteger();
System.out.println(a.remainder(b));
}
}
}
方法二:用到了同余定理中的 (a * b) % c = ((a % c) * (b % c)) % c的结论
#include<iostream>
#include<string>
using namespace std;
int main() {
string a;
int b, LenA,res;
while(cin >> a >> b) {
res = 0;
LenA = a.length();
for(int i = 0;i < LenA;i++) {
res = ((res * 10) % b + a[i] - '0') % b;
}
cout << res << endl;
}
return 0;
}