习题2-4 子序列的和
问题描述:
输入两个正整数,n < m < 10的6次方,输出1/n*n+1/(n+1)*(n+1)+…+1/m*m,保留5位小数。输入包含多组数据,结束标记为n=m=0。提示:本题有陷阱。
样例输入:
2 4
65536 655360
0 0
样例输出:
Case 1: 0.42361
Case 2: 0.00001
JAVA 代码如下:
package com.bean.algorithmexec;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.text.DecimalFormat;
import java.util.Scanner;
public class SumOfSubList {
static String Answer;
public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub
System.setIn(new FileInputStream("G:\\sumofsublist.txt"));
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for (int test_case = 1; test_case <= T; test_case++) {
long n, m = 0;
n = sc.nextLong();
m = sc.nextLong();
if (n != 0 && m != 0) {
double sum = 0.0;
while (n != 0 && m != 0) // 如果是n和m都不能为0,将&&后面的判断改为(n != 0 && m != 0)即可。
{
sum = 0.0;
for (long i = n; i <= m; i++) {
sum += 1.0 / (double) (i * i);
}
n = 0;
m = 0;
}
DecimalFormat df = new DecimalFormat("0.00000");
Answer = df.format(sum);
System.out.println("#" + test_case + " " + Answer);
} else {
System.out.println("#" + test_case + " N/A");
}
}
}
}
(完)