iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0
自我挑戰組

30天從0開始的NCPC之旅系列 第 16

[Day 16] UVA948 & UVA10041& UVA12149

  • 分享至 

  • xImage
  •  

UVA00948

點我進UVA00948

題意

輸入數字輸出對應的費氏數列的值
費氏數列:

來源: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)

怕大家看不懂,附上圖片給大家參考
https://ithelp.ithome.com.tw/upload/images/20220928/20152494NMABVoJgzy.jpg

#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;
}

UVA10041

點我進UVA10041

題意

需要找一間和親戚間總距離最小的房子

解題思路

先找出該數列的中位數
再將中位數到該數列數字的距離加總起來即可求出總和

#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;
	}


}

UVA12149

點我進UVA12149

題意

當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;
 }
}

上一篇
[Day 15] UVA10008 &UVA11063
下一篇
[Day17] UVA10056 & UVA10189
系列文
30天從0開始的NCPC之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言