HDU-1212 Big Number(同餘定理)

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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章