解题思路:
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语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:704 |
C语言训练-求PI* (C语言代码)浏览:930 |
C语言训练-邮票组合问题* (C语言代码)......浏览:689 |
C语言程序设计教程(第三版)课后习题8.3 (Java代码)浏览:1402 |
C语言程序设计教程(第三版)课后习题9.2 (Java代码)浏览:696 |
母牛的故事 (C语言代码)浏览:478 |
核桃的数量 (C语言代码)浏览:726 |
简单的a+b (C语言代码)浏览:683 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:856 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:504 |