我需要编写一个程序,打印从a到b(a<b(的所有整数的乘积。
在产品中包括a并排除b。
样本输入1:
12
样本输出1:
1
您的代码输出:
2
这是我的代码:
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
long a = scanner.nextLong();
long b = scanner.nextLong();
long multiply = 0;
for(long i = a; i<b; i++){
multiply = i * (i+1);
}
System.out.println(multiply);
}
}
我做错了什么?请提示:(
更新:
这也无济于事。
测试输入:
12
正确输出:
1
您的代码输出:
0
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
long a = scanner.nextLong();
long b = scanner.nextLong();
long multiply = 0;
for(long i = a+1; i<b; i++){
multiply = i * (i+1);
if(multiply==2){
--multiply;
}
}
System.out.println(multiply);
}
}
您应该从multiply = 1
开始,然后将其与下一个整数相乘。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
long a = scanner.nextLong();
long b = scanner.nextLong();
long multiply = 1;
for (long i = a; i < b; i++) {
multiply *= i;
}
System.out.println(multiply);
}
}
样本运行:
1 2
1
另一个样本运行:
2 5
24
让我们在编写代码之前先找出解决方案&理解什么";从a到b的所有整数的乘积(a<b(";是
对于a=1和b=2,因为我们包括1,不包括2,所以结果是1同样,对于a=1和b=3,结果是1*2
因此,您的第一个实现实际上是接近的:您希望循环遍历结果中包含的所有数字,并通过乘法累加这些数字。您不希望只使用multiply = i * (i+1);
,因为它将在每次循环迭代中替换multiply
的值,相反,您应该使用multiply
的前一个值,并将其与i
组合