求以下三数的和,保留2位小数,
题 目 : 1 + 2 + 3 + ⋯ + a + 1 2 + 2 2 + 3 2 + ⋯ + b 2 + 1 / 1 + 1 / 2 + ⋯ + 1 / c = ? 题目: 1+2+3+\cdots+a+1^2+2^2+3^2+\cdots+b^2+1/1+1/2+\cdots+1/c=? 题目:1+2+3+⋯+a+12+22+32+⋯+b2+1/1+1/2+⋯+1/c=?
1 + 2 + 3 + ⋯ + a = a ( a + 1 ) / 2 : 前 n 项 和 公 式 1+2+3+\cdots+a=a(a+1)/2:前n项和公式 1+2+3+⋯+a=a(a+1)/2:前n项和公式
1 2 + 2 2 + 3 2 + ⋯ + b 2 = b ( b + 1 ) ( 2 b + 1 ) / 6 1^2+2^2+3^2+\cdots+b^2=b(b+1)(2b+1)/6 12+22+32+⋯+b2=b(b+1)(2b+1)/6
数学公式有的还是要记记的啊~~
Java版本:
import java.util.*;
public class Demo2 {
public static void main(String[] args) {
int a,b,c;
double sum = 0.0;
Scanner input=new Scanner(System.in);
a =input.nextInt();
b =input.nextInt();
c =input.nextInt();
sum=a*(a+1)/2+b*(b+1)*(2*b+1)/6;
/*
* a*(a+1)/2:数列前n项和
* b*(b+1)*(2*b+1)/6:1²+2²+3²+...+n²=n(n+1)(2n+1)/6
* 来自数学公式的藐视!!
*/
while(c!=0){
sum+=(1.0/c);
c--;
}
System.out.println(new java.text.DecimalFormat("#.00").format(sum));
/*
* DecimalFormat类:一个NumberFormat的子类,用于格式化十进制数字。
* 它可以将结果转化为整数、浮点数、百分数等,通过使用该类可以为要输出的数字加上单位或控制速度
* DecimalFormat("#.00").format(sum)
* “#.00”代表保留两位小数
* format(sum):sum为需要格式化的数字
*/
}
}
C语言版:
#include<stdio.h>
int main(){
int a, b, c;
double sum = 0.0;
scanf("%d %d %d",&a,&b,&c);
sum = a*(a+1)/2+b*(b+1)*(2*b+1)/6;
for(;c!=0;c--)
sum+=(1.0/c);
printf("%.2lf",sum);
return 0;
}
这次Java的数字格式化让我有点懵,后面要找时间理一理数字格式化的内容了
这次我觉着最好的想法就是那两个公式,这俩公式一写,节省了两段循环代码,还行,数学还是蛮重要的~~~~
学习!学习!学习!
一年之后看看或许会很自豪呢
如出现问题,恳请大佬指正,感激不尽,慢慢进步ing
2020.4.23
题目和算法来源:https://www.dotcpp.com/