前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >洛谷-----P5534 【XR-3】等差数列

洛谷-----P5534 【XR-3】等差数列

作者头像
大忽悠爱学习
发布2021-11-15 11:14:03
2990
发布2021-11-15 11:14:03
举报
文章被收录于专栏:c++与qt学习
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

等差数列题解集合


公式法

套用数学上面的等差数列求和公式:Sn=a1*n+n(n-1)*d/2

末项公式:Sn = a1 + (n - 1) * d;

代码:

代码语言:javascript
复制
#include<iostream>
using namespace std;
class Solution {
public:
	long solution(long a1,long a2,long n)
	{
		long d = a2 - a1;
		return a1 * n + n * (n - 1) * d / 2;
	}
};
int main()
{
	Solution s;
	long a1, a2, n;
	cin >> a1 >> a2 >> n;
	cout << s.solution(a1, a2, n) << endl;
	return 0;
}
在这里插入图片描述
在这里插入图片描述

dfs

思路:

还是将问题树形化,化成对一颗树的遍历,这样就很方便写出递归的代码

在这里插入图片描述
在这里插入图片描述

显然这里是对一叉树的遍历,递归过程中我们需要求出当前所要累加上去的当前项的值,当前项的值可以通过递推公式求出来,即an=a1+(n-1)*d

代码:

代码语言:javascript
复制
#include<iostream>
using namespace std;
class Solution {
public:
	long solution(long a1,long d,long max)
	{
		if (abs(a1) > abs(max)) return 0;
		return solution(a1 + d, d, max)+a1;
	}
};
int main()
{
	Solution s;
	long a1, a2, n;
	cin >> a1 >> a2 >> n;
	long d = a2 - a1;
	//递归结束条件,累加到第n项
	long max = a1 + (n - 1) * d;
	cout << s.solution(a1,d,max)<< endl;
	return 0;
}
在这里插入图片描述
在这里插入图片描述

超时了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/05/31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 等差数列题解集合
  • 公式法
  • dfs
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档