此代码块在n
import java.util.*;
class SpoTwo{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
int testcase,n,answer;
long bin;
String s;
testcase=sc.nextInt();
for(int i=0;i<testcase;i++){
n=sc.nextInt();
s=Integer.toBinaryString(n);
bin=Integer.parseInt(s);
answer=(int)Math.pow(2,bin*2);
System.out.println(answer%1000000007);
}
}
}
例外:
Exception in thread "main" java.lang.NumberFormatException: For input string: "10010010011111000000"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:495)
at java.lang.Integer.parseInt(Integer.java:527)
at SpoTwo.main(SpoTwo.java:12)
答案 0 :(得分:3)
600000
的二进制表示形式为10010010011111000000
。这不是有效的10整数。它是一个有效的基数2整数。使用
bin = Integer.parseInt(s, 2);
您正在使用的重载parseInt
方法
将字符串参数解析为带符号的十进制整数。那些角色 在字符串中必须都是十进制数字,除了第一个 字符可以是ASCII减号' - '('\ u002D')来表示a 负值或ASCII加号'+'('\ u002B')表示a 正面价值。返回结果整数值,就像是一样 参数和基数10作为参数给出
parseInt(java.lang.String, int)
方法。
答案 1 :(得分:0)
你有一个字符串并移动到二进制,然后将该字符串转换为整数,然后vc是权力,所以整个支持一定数量的房屋,所以这是一个爆炸,你可以使用paserInt把数字家庭或整体变成双人。