题目描述
求a乘b对p取模的值,这一题的难点主要是数据的转换一开始我想用的是Integer.valueOf(str)转换结果老是提示 Exception in thread “main” java.lang.NumberFormatException: input string: “很长的一个一组数字”,后来发现可能是电脑版本问题:Integer在32位的编译环境下,存储长度为32位。即-2^31~2^31-1; 即-2,147,483,648~2,147,483,647,此时将Integer换成BigInteger类型
样例
输入样例
3
4
5
输出样例
2
java代码```
import java.util.Scanner;
import java.lang.Math;
import java.math.BigInteger;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String a=in.nextLine();
String e=in.nextLine();
String p=in.nextLine();
BigInteger k=new BigInteger(a);
BigInteger b=new BigInteger(e);
BigInteger c=new BigInteger(p);
long ans=0;
long l=b.longValue(),i=k.longValue(),q=c.longValue();
while(l>0){
if((l&1)==1){
ans=ans+i;
ans=ans%q;
}
i=i+i;
i=i%q;
l=l>>=1;
}
System.out.println(ans%q);
}
}blablabla
```