/*
一开始我用的是:
DecimalFormat df = new DecimalFormat(".##"); 就WA了。
我以为是精度的问题,又换成Printf("%.2f",sum); 结果又PE了
又继续搞DecimalFormat,给df.setRoundingMode(RoundingMode.HALF_UP); //默认是RoundingMode.HALF_EVEN
结果还WA
最后改成:
DecimalFormat df = new DecimalFormat(".00"); 就AC了。
*/
Problem Description
数列的定义如下:
数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。
数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。
Input
输入数据有多组,每组占一行,由两个整数n(n<10000)和m(m<1000)组成,n和m的含义如前所述。
Output
对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。
Sample Input
81 4 2 2
Sample Output
94.73 3.41
import java.math.RoundingMode; import java.text.DecimalFormat; import java.util.Scanner; public class Q2009 { public static void main(String[] args){ Scanner s = new Scanner(System.in); while(s.hasNext()){ double n = s.nextDouble(),m = s.nextInt(); if(n >= 10000 || m >= 1000) break; double sum = 0; DecimalFormat df = new DecimalFormat(".00"); // df.setRoundingMode(RoundingMode.HALF_UP); for(int i = 1 ; i <= m; i ++){ sum += n; n = Math.sqrt(n); } System.out.println(df.format(sum)); // System.out.printf("%.2f\n",sum); } s.close(); } }