POJ 2305

Basic remains
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 4502 Accepted: 1904

Description

Given a base b and two non-negative base b integers p and m, compute p mod m and print the result as a base b integer. p mod m is defined as the smallest non-negative integer k such that p = a*m + k for some integer a.

Input

Input consists of a number of cases. Each case is represented by a line containing three unsigned integers. The first, b, is a decimal number between 2 and 10. The second, p, contains up to 1000 digits between 0 and b-1. The third, m, contains up to 9 digits between 0 and b-1. The last case is followed by a line containing 0.

Output

For each test case, print a line giving p mod m as a base-b integer.

Sample Input

2 1100 101
10 123456789123456789123456789 1000
0

Sample Output

10
789

Source

这道题运用了JAVA的一个极为NB的功能:进制转换!

函数:

String st = Integer.toString(num, base); // 把num当做10进制的数转成base进制的st(base <= 35).

int num = Integer.parseInt(st, base); // 把st当做base进制,转成10进制的int(parseInt有两个参数,第一个为要转的字符串,第二个为说明是什么进制).  

BigInter m = new BigInteger(st, base); // st是字符串,base是st的进制.


1.如果要将一个大数以2进制形式读入 可以使用cin.nextBigInteger(2);

当然也可以使用其他进制方式读入;

2.如果要将一个大数转换成其他进制形式的字符串 使用cin.toString(2);//将它转换成2进制表示的字符串

import java.io.*;
import java.util.*;
import java.math.*;

/**
 *
 * @author XM_zhou
 */
public class Main
{

    public static void main(String[] args)
    {
        Scanner cin = new Scanner(System.in);
        BigInteger a , b;
        String str;
        int n ;
        while(cin.hasNext())
        {   
            n = cin.nextInt();
            if(n == 0)break;
            a = cin.nextBigInteger(n);
            b = cin.nextBigInteger(n);
            a = a.mod(b);
            str = a.toString(n);
            System.out.println(str);
        }

    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值