解题思路:

注意事项:

参考代码:

/*给定一个正整数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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论