多项式求和 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 5 Accepted Submission(s) : 5 Problem Description 多项式的描述如下: 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ... 现在请你求出该多项式的前n项的和。 Input 输入数据由2行组成,首先是一个正整数m(m<100),表示测试实例的个数,第二行包含m个正整数,对于每一个整数(不妨设为n,n<1000),求该多项式的前n项的和。 Output 对于每个测试实例n,要求输出多项式前n项的和。每个测试实例的输出占一行,结果保留2位小数。 Sample Input 2 1 2 Sample Output 1.00 0.50
package ACM1; import java.text.DecimalFormat; import java.util.Scanner; public class nyojw2 { public static void main(String[]args) { Scanner scanner = new Scanner(System.in); int m = scanner.nextInt(); DecimalFormat dc = new DecimalFormat("0.00"); for(int i=0;i<m;i++) { double sum=0; double p; int n = scanner.nextInt(); for(int j=1;j<=n;j++) { if(j%2!=0) { p=1.0/j; } else p=-(1.0/j); // System.out.println("p is "+ p); sum=sum+p; continue; } String num = dc.format(sum); System.out.println(num); } } }
绿色部分:注意:整数除以整数=整数所以1/2=0 所以导致一直算错
黄色部分是保留小数的后几位的方法:
DecimalFormat df = new DecimalFormat("0.00");
String num = df.format(sum);
System.out.println(num);
String num = df.format(sum);
System.out.println(num);