[TIOJ] 1751. Ch1. Section 1. 愛的啟程

題目連結:http://tioj.infor.org/problems/1751
本題就直接每次都拿不比他大中最大的那個換,所以就把再int範圍內的費式數列倒著跑一遍,每當比他小就把原數扣掉他,最後驗原數是不是被換成0了就好了
int範圍內的費式數列共有46個
#include <bits/stdc++.h>
using namespace std;

vector<int> f;

int main(){
	f.push_back(1);
	f.push_back(1);
	for(int i=2;i<46;i++)
		f.push_back(f[i-1]+f[i-2]);
	int t;
	scanf("%d",&t);
	while(t--){
		int n,ans=0;
		scanf("%d",&n);
		for(int i=f.size()-1;i>0;i--){
			if(f[i]<=n){
				n-=f[i];
				ans++;
			}
		}
		if(n==0) printf("%d\n",ans);
		else puts("iyada~");
	}
	return 0;
}

留言

這個網誌中的熱門文章

[TIOJ] 1271. [IOI 2012] Scrivener 斯克里夫尼

[TIOJ] 1429. [APIO '12] 忍者調度問題

[Codeforces] 731D. 80-th Level Archeology