我正在尝试运行此代码,但我收到错误,我无法解决。请帮忙。
import java.util.Scanner;
import java.math.BigInteger;
class Cseq
{
public static void main(String []args)
{
Scanner jais=new Scanner(System.in);
int x=100000;
BigInteger i;
BigInteger []a = new BigInteger[x];
a[0]=BigInteger.ONE;
for(i=BigInteger.ONE;i.compareTo(BigInteger.valueOf(x))<=0;i=i.add(BigInteger.ONE))
{
a[i]=a[(i.subtract(BigInteger.ONE))].multiply(i);
}
int t=jais.nextInt();
while(t--!=0)
{
BigInteger n=jais.nextBigInteger();
BigInteger p=jais.nextBigInteger();
BigInteger q=jais.nextBigInteger();
BigInteger v=(q.subtract(p)).add(BigInteger.ONE);
BigInteger j;
BigInteger sum=BigInteger.ZERO;
for(j=BigInteger.ONE;j.compareTo(n)<=0;j=j.add(BigInteger.ONE))
{
sum=sum.add(a[v].divide(a[(v.subtract(j))].multiply(a[j])));
sum=sum.add(v);
}
sum=sum.subtract(v);
System.out.println(sum);
}
jais.close();
}
}
答案 0 :(得分:0)
你得到的5个错误都与数组的索引值有关。那应该是整数。
在所有这些表达式中,您需要将表达式结果更改为整数值。
a[i]=a[(i.subtract(BigInteger.ONE))].multiply(i);
此处i
和(i.subtract(BigInteger.ONE))
应为整数。
也
sum=sum.add(a[v].divide(a[(v.subtract(j))].multiply(a[j])));
此处v
,(v.subtract(j))
和j
应为整数。
相应地更改这些索引数据类型。
在所有这些地方使用intValue()
look it here
更改此行代码
a[i]=a[(i.subtract(BigInteger.ONE))].multiply(i);
到
a[i.intValue()]=a[(i.subtract(BigInteger.ONE)).intValue()].multiply(i);