文章
67
粉丝
207
获赞
29
访问
36.5k
1.直接 unsigned long long ,适合求位数小的
#include <iostream>
#include <string.h>
using namespace std;
int main(){
unsigned long long int a[71];
a[0]=1;
a[1]=1;
a[2]=2;
for(int i=3;i<=70;i++)
a[i]=a[i-1]+a[i-2]+a[i-3];
int n;
while(cin >>n){
cout << a[n] <<endl;
}
}
2. 用数组,适合求位数大的
#include <iostream>
#include <string.h>
using namespace std;
int main(){
int n;
char a[100][100];
for(int i=0;i<100;i++)
for(int j=0;j<100;j++)
a[i][j]='0';
a[1][0]='1';
a[2][0]='1';
a[3][0]='2';
for(int i=4;i<=72;i++){
for(int j=0;j<=72;j++){
if(a[i-1][j]-'0'+a[i-2][j]-'0'+a[i-3][j]-'0'>=20){
a[i][j+1]+=2;
if(a[i][j]!='0'){
a[i][j]=a[i][j]+a[i-1][j]-'0'+a[i-2][j]-'0'+a[i-3][j]-'0'-20;
if(a[i][j]>'9')
{
a[i][j]=a[i][j]-10;
a[i][j+1]=a[i][j+1]+1;
}
}//81 149 274
else
a[i][j]=a[i][j]+a[i-1][j]-'0'+a[i-2][j]-'0'+a[i-3][j]-'0'-20;...
登录后发布评论
暂无评论,来抢沙发