zoukankan      html  css  js  c++  java
  • (大数取模)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
  • 相关阅读:
    .net中的目录
    select into in mysql
    内存泄漏调查
    【NO.3】 c program to caculate and display sum of two matrix
    LoadRunner获取一个独特的价值在执行的场景
    Android 基于Netty接收和发送推送解决方案的消息字符串(三)
    springmvc如何访问静态文件,例如jpg,js,css
    HTTP求
    SlopOne推荐算法
    回溯-01背包问题之二:连续工作模式
  • 原文地址:https://www.cnblogs.com/Weixu-Liu/p/9165366.html
Copyright © 2011-2022 走看看