B2072 分苹果 题解

· · 题解

这是本人第1次写题解(大佬勿喷,有错请指出,还求管理大大能用!)

题目传送门

根据题目我们知道了苹果数每次要不同,所以要求的总数就等于1到第n人数量的累加,这时就有了CODE1,如下

#include<bits/stdc++.h>    //万能头文件 
using namespace std;
int main(){                //主函数 
    int n,sum=0;           //创立一个n的整数变量 sum为累加器 
    cin>>n;                //输入n 
    for(int i=1;i<=n;i++){ //for的循环 ,从i开始一直循环到n 
    sum+=i;            //累加器 
    }
    cout<<sum;             //输出结果sum 
    return 0;              //完美结束撒花! 
}

但是这题还可以优化,利用等差求和公式

即:(首相+末相)*相数/2

运用道题中就为:(1+n)*n/2,去括号得:n+n²/2,这时就有了公式般CODE2,如下

#include<bits/stdc++.h>  //万能头文件 
using namespace std;
int main(){              //主函数 
    int n,sum=0;         //创立一个n的整数变量 ,sum用来存数
    cin>>n;              //输入n 
    sum=(n+n*n)/2;       //套公式,即等差数列求和公式
    cout<<sum;           //输出sum 
    return 0;            //完美结束撒花!
}

最后希望管理员大大能过!!!

The end.