C++洛谷题解(38)——P5722

题目信息

题名:数列求和

题目:计算 1+2+3+⋯+(n−1)+n 的值,其中正整数 n 不大于 100。由于你没有高斯聪明,所以你不被允许使用等差数列求和公式直接求出答案。

输入格式:输入一个正整数 n。

输出格式:输出一个正整数,表示最后求和的答案。

输入样例:100

输出样例:5050

说明提示:数据保证,1≤n≤100。

分析题目

这道题我最熟悉,“作案手法”我也最熟。这道题被C++计算机水平考试四级当作程序编写题的第二题,当时我就“作弊”用的等差数列公式。因为做过,个人感觉这道题so so so,easy。但如果正规的不用公式就不一样了,这里还是说用公式的方法。

先来说一下等差数列公式,相信只要年龄≤10就知道这个公式,即(首项+末项)x项数÷2。让百度说一段:

等差数列是指从第二项起,每一项与它的前一项的差等于同一个常数的一种数列,常用A、P表示。这个常数叫做等差数列的公差,公差常用字母d表示。例如:1,3,5,7,9……2n-1。通项公式为:an=a1+(n-1)*d。首项a1=1,公差d=2。前n项和公式为:Sn=a1*n+[n*(n-1)*d]/2或Sn=[n*(a1+an)]/2。注意:以上n均属于正整数。

直接上思路吧(还用说思路吗?):

  1. 声明n
  2. 输入n
  3. 直接套公式

示例代码

注释版:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;                           //整数n,既是数列的末项,又是数列的项数
    cin >> n;                        //输入n的值
    cout << (1 + n) * n / 2 << endl; //不让用也用,反正又没有检测。这算不算卡Bug?
    system("pause");
    return 0; //直接结束
}

复制版:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin >> n;
    cout << (1 + n) * n / 2 << endl;
    system("pause");
    return 0;
}

以上除了题目外全部为废话

虽然光提交上面的代码也能通过,但如果在正规比赛可就不一定喽(话说正规比赛也不靠这个呀),所以我们还是要用其他方法做这道题的。

  1. 声明n和a并输入n
  2. 遍历1~n之间的所有数
  3.  a+=i,累加a
  4. 输出a

直接上代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
   int a=0,n;
   cin>>n;
   for(int i=1;i<=n;i++)
   {
    	a+=i;
   }
   cout<<a;
   return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mine Shin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值