在牛客网上找到的两道关于等差数列的题目,两个题目均可以用等差数列的前n项和公式来进行求解
目录
1.等差数列
题目描述:等差数列a1=2,d=3,输入正整数n(多组输入),输出前n项和
如图:
思路分析:回想一下关于等差数列的前n项和公式
1.
2.
这里已知a1和d,很显然使用第二个求和公式
代码如下:
#include<stdio.h>
int main()
{
int n=0;
while(scanf("%d",&n)!=EOF)
{
int i=2;
int a=n*i;
int b=n*(n-1)*3/2;
printf("%d\n",a+b);
}
return 0;
}
结果如图:
2.尼科彻斯定理
题目描述:任何一个整数m的立方都可以写成m个连续奇数之和
例:2^3=5+3
3^3=7+9+11
多组输入一个正整数m(m≤100),将m的立方写成m个连续奇数之和的形式输出
如图:
思路分析:我们仔细查看输出就会发现,输出的数字其实是长度为m的等差数列,公差为2,等差数列前m项的和就是m^3,那么我们同样可以利用等差公式的前n项和公式,
若Sn=m^3,那么a1就是输出的第一个数字,后续数字在a1上加上2即可
代码如下:
#include<stdio.h>
int main()
{
int n=0;
while(scanf("%d",&n)!=EOF)
{
int i=0;
int j=n*n*n;
for(i=1;i<j;i=i+2)
{
int a=n*i;
int b=n*(n-1);
if(a+b==j)
break; //当循环停止的时候,i的值就是a1
}
int count=1;
while(count<=n)
{
if(count<n)
printf("%d+",i);
if(count==n)
printf("%d\n",i);
i+=2;
++count;
}
}
return 0;
}
结果如图:
完