文章
67
粉丝
207
获赞
188
访问
80.0k
 
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;...
    
登录后发布评论
暂无评论,来抢沙发