解题思路:
3^0
3^1 3^0+3^1
3^2 3^0+3^2 3^1+3^2 3^0+3^1+3^2
以此类推,发现规律为:比如第三行第三个数是第三行的开头3^2加上第二行的第一个数3^1,第三行第四个数是第三行的开头3^2加上第二行第二个数3^0+3^1,由此想到使用递推填充数组后直接输出答案。
注意事项:
参考代码:
#include<stdio.h>
long long int f(int k,int i){//一个简单的k次方函数
long long int last=1;
for(int j=1;j<=i;j++){
last=last*k;
}
return last;
}
int main()
{
int k,N,max1,max2=0,i;
long long int n[1001]={0};
scanf("%d %d",&k,&N);
for(i=1;i<=1000;i++){//循环来使用递推向数组充填数值
if(i==f(2,max2)){//判断当在每行第一个位置且未超出范围时
n[i]=f(k,max2);
max1=n[i]; //max1 max2 起到标记位置的作用
max2++;
}
else n[i]=max1+n[i-f(2,max2-1)];//数列的规律,每行的非第一个位置应该填的数,max1为该行第一个数,n[i-f(2,max2-1)]为前面的数
}
printf("%lld",n[N]);
return 0;
}
0.0分
3 人评分
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:325 |
点我有惊喜!你懂得!浏览:1395 |
C语言训练-阿姆斯特朗数 (C语言代码)浏览:855 |
破解简单密码 (C语言代码)浏览:1768 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:517 |
C二级辅导-同因查找 (C语言代码)浏览:585 |
ASCII帮了大忙浏览:749 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:546 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:703 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:338 |