輸入數字輸出對應的費氏數列的值
費氏數列:
來源:https://zh.wikipedia.org/wiki/%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0
費氏數列的遞迴關係
F0 = 0
F1 = 1
Fn = Fn-1 +Fn-2 (n>=2)
怕大家看不懂,附上圖片給大家參考
#include<iostream>
using namespace std;
int main(){
int n,m,f[39];
f[0]=1;
f[1]=2;
for(int i=2;i<39;i++){
f[i]=f[i-1]+f[i-2];
}
cin>>n;
while(n--){
cin>>m;
cout<<m<<" = ";
int flag=0;
for(int i=38;i>=0;i--){
if(m>=f[i]){
flag=1;//代表從此之後即使是零也要輸出
cout<<"1";
m-=f[i];}
else if(flag) cout<<"0";
}
cout<<" (fib)"<<endl;
}
return 0;
}
需要找一間和親戚間總距離最小的房子
先找出該數列的中位數
再將中位數到該數列數字的距離加總起來即可求出總和
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector <int> num;
int main(){
int n,r,s;
cin>>n;
while(n--){
cin>>r;
num.clear();
for(int i=0;i<r;i++){
cin>>s;
num.push_back(s);
}
sort(num.begin(),num.end());
int mid=num[r/2];
int sum=0;
for(int i=0;i<r;i++){
sum+=abs(mid-num[i]);
}
cout<<sum<<endl;
}
}
當N=2時,其中含有多少個正方形
#include<iostream>
using namespace std;
int main(){
int a,total;
while(cin>>a){
if(a==0) break; //套用公式 i*i+(i-1)*(i-1)+...+1*1 ,計算所有的正方形
for(int i=a;i>0;i--){
total += i*i;
}
cout<<total<<endl;
total=0;
}
}