输入两个正整数n<m<10的6次方,输出1/(n*n)+1/((n+1)*(n+1))+~+1/(m*m),保留5位小数。例如n=2,m=4时,答案是0.42361;n=65536,m=655360时,答案为0.00001。注意:本题有陷阱。
样例输入:2 4
样例输出:0.42361
样例输入:65536 655360
样例输出:0.00001
下面贴出源码:
package cn.zimo.algorithm;import java.util.Scanner;/*** 子序列的和* @author 子墨* @date 2018年4月26日 下午7:58:49*/
public class Demo14 {public static void main(String[] args) {int n,m;float sum=0.0f;Scanner scan=new Scanner(System.in);n=scan.nextInt();m=scan.nextInt();if(m==0||n==0) {return;}if(n>m) {n=n+m;m=n-m;n=n-m;}for(long i=n;i<=m;i++) {sum+=(1.0f/(i*i));if(sum<1e-6) {sum=(float) 1e-5;break;}//System.out.println("sum="+sum);}System.out.printf("%.5f",sum);}
}