社区讨论

83pets,大佬求调

P1755斐波那契的拆分参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lzhzretr
此快照首次捕获于
2024/08/06 13:40
2 年前
此快照最后确认于
2024/08/06 14:44
2 年前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
int t,m=0,d[100000005];
int main(){
	cin >> t;
	d[0]=1;
	d[1]=1;
	for(int i=2;i<100000005;i++){
		d[i]=d[i-1]+d[i-2];
	}
	while(t--){
		int a;
		cin >> a;
		int u=a;
		if(a==1){
			cout << "1=1" << endl;
			continue;
		}else if(a==2){
			cout << "2=2" << endl;
			continue;
		}else if(a==3){
			cout << "3=1+2" << endl;
			continue;
		}
		for(int i=0;i<100000005;i++){
			if(d[i]>a){
				m=i-1;
				break;
			}
		}
		int s[100000005];
		int h=0;
		for(int i=m;i>=0 && a!=0;i--){
			if(d[i]<=a){
				s[h++]=d[i];
				a-=d[i];
			}
		}
		cout << u << "=";
		for(int i=h-1;i>=1;i--){
			cout << s[i] << "+";
		}
		cout << s[0] << endl;
	}
	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...