解题思路:
注意事项:
参考代码:
/*给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,
例如,当k=3时,这个序列是:
1,3,4,9,10,12,13,…
观察数列,知3的i次方(i={0,1,2...})后面的数(直到3的i+1次方)为该项分别与前面的数的和。如3的2次方后的3个数(3次方前),分别为
9+1 9+3 9+4 3的3次方后的数为 27+1 27+3 27+4 27+9 27+10 27+12 27+13 依次类推即发现规律。
例如,对于k=3,N=100,正确答案应该是981。*/
#include<stdio.h>
int pow(int k,int x); //求k的x次幂
int arr[1000]; //不得超过1000项
/************************************************************/
int main ()
{
int k; //底数
int n; //输出第n个数
int num=0; //数列的项数
int ki; //辅助变量
int x=0; //k的x次幂,每for循环一次加1
scanf("%d %d",&k,&n);
arr[num++]=1; //初始化第一个数
while (num<n+2) //出现所所需项数就退出循环
{
ki=num;
//按规律增加
for(int i=0;i<ki-1;i++) //此处实现当前幂次数循环加前面每一项
arr[num++]=arr[ki-1]+arr[i];
x++;
arr[num++]=pow(k,x);
}
printf ("%d",arr[n-1]);
return 0;
}
/************************************************************/
int pow(int k,int x)
{
int sum=1;
for (int i=0;i<x;i++)
{
sum*=k;
}
return sum;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复