YTU OJ 2370: 圆周率(Java大数进制转换)

Description

YT大学附小举办背诵圆率 PI 的比赛。谁背的正确的位数越多,谁为胜者。很多小学生背的位数很多,但是往往会有少数位置的数是错误的。为了快速加测出错误的圆周率,将圆周率 PI 小数点后的数字求模进行简单验证。

例如:某学生背的圆周率为 3.15,则1510 mod 9 = 6,可以初步判定该学生背的圆周率错误。

数有不同的进制表示,比如二进制、八进制、十进制等。现在给你一个任务,给定一个n进制,要它对n-1求模,比如:

             782910 mod 9 =  8

             377777777777777738 mod 7 =6

             1234567 mod 6 =3

(注意:377777777777777738=112589990684261910   1234567 =2287510 )

你的任务是读入一些不同进制的数,求模。

Input

 第一行表示为整数P(1≤P≤1000),表示一共的测试数据组数。

每组测试测试数据一行,由三个数组成,第一个数表示组号,第二个数B(2≤B≤10),表示B进制,第三个数D表示要求模的数,D的位数不超过10,000,000位。

Output

每组测试数据一行,每一个数为组号,第二个为 D mod (B-1)

Sample Input

6
1 10 7829
2 7 12345
3 6 432504023545112
4 8 37777777777777773
5 2 101011111111110000000000000000000011111111111111111111111
6 10 145784444444444457842154777777777547845993

Sample Output

1 8
2 3
3 1
4 6
5 0
6 6

【AC代码】:

import java.math.BigInteger;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		for (int i = 0; i < n; i++) {
			int a = sc.nextInt();
			int t = sc.nextInt();
			String s = sc.next();
			String x = new java.math.BigInteger(s, t).toString(10);//将进制为t字符串s对应数字转化为10进制
			BigInteger y = new java.math.BigInteger(x);//将字符串x转化为大数型
			System.out.println(a + " " + y.mod(BigInteger.valueOf(t - 1)));
		}
	}

}

 

你可能感兴趣的:(YTU,OJ,Java)