(大数取模)Big Number hdu1212

Posted weixu-liu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(大数取模)Big Number hdu1212相关的知识,希望对你有一定的参考价值。

Big Number

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 9006    Accepted Submission(s): 6100

 

 

Problem Description

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

 

(ABC)%n=(A*100%n+B*10%n+C%n)%n

(A*B)%n=(A%n*B%n)%n

于是,可以利用循环,对于挺大的数,利用字符串来表示这个数。

比如,令ABC为字符串,则有

1)sum=A%n;

2)A%n*10+B%n=sum+B%n

于是sum=(sum+B%n)%n

3)经过循环,会有:

sum=(sum+C%n)%n=((sum+B%n)%n*10+C%n)%n=((A%n*10+B%n)%n*10+C%n)%n=((A*100%n+B*10%n)%n+C%n)%n=(A*100%n+B*10%n+C%n)%n

故而可以用循环求解。

技术分享图片
#include <iostream>
#include <string>
using namespace std;
int main()
{
    string a;
    int b,len,sum;
    while(cin>>a>>b)
    {
        len=a.length();
        sum=0;
        for(int i=0;i<len;i++)
            sum=(sum*10+(a[i]-0)%b)%b;
        cout<<sum<<endl;
    }
    return 0;
}
View Code

用JAVA更简单

 

技术分享图片
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner (System.in);
        int n;
        BigInteger a,b;
        while(in.hasNextBigInteger()) {
            a=in.nextBigInteger();
            b=in.nextBigInteger();
            a=a.remainder(b);
            System.out.println(a);
        }
    }
}
View Code

 

以上是关于(大数取模)Big Number hdu1212的主要内容,如果未能解决你的问题,请参考以下文章

HDU 1212: Big Number

HDU1212 Big Number 同余定理

HDU 1018Big Number(大数的阶乘的位数,利用公式)

HDU 1018 Big Number

1212Big Number 高精除

hdu2302(枚举,大数取模)