iT邦幫忙

2022 iThome 鐵人賽

DAY 18
0
自我挑戰組

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

[Day 18] UVA10935 &UVA10783 &UVA10633

  • 分享至 

  • xImage
  •  

UVA10935

點我進UVA10935

題意

編號為1到n的n張卡片,最上方為卡片 1,底部為卡片n,且一副牌中至少有兩張卡片,
途中一直不斷將最上方的牌捨棄,再將現在最上方的牌移到最底部,最後會剩餘一張牌。
input為n(n張卡片),直到input為0才終止,要輸出Discarded cards的順序及最後剩餘的那張牌是多少(Remaining card),

#include<iostream>
#include<vector>
using namespace std;

int main(){
int n;
while(cin>>n&&n!=0){
if(n==1){
 cout<<"Discarded cards:"<<endl;
 cout<<"Remaining card: 1"<<endl;
}
else{
vector <int> a;
a.clear();
 
 for(int i=n;i>=1;i--){
  a.push_back(i);
 }
 cout<<"Discarded cards: ";
 
 while(n--&&n>=1){
  cout<<a[n];
  if(n>=2){cout<<", ";}
  a.pop_back();
  a.insert(a.begin(),a[n-1]); 
  
 }
 cout<<endl;
 cout<<"Remaining card: "<<a[1]<<endl;
 
}
}
return 0;
}

UVA10783

點我進UVA10783

題意

輸入兩個數字,計算奇數和

解題思路

利用迴圈,當該數/2餘數不為0,則加總

#include <iostream>

using namespace std;

int main(){
	int n,count=1;
	cin>>n;
	while(n--){
		int a,b;
		int sum=0;
		cin>>a>>b;
		for(int i=a;i<=b;i++){
			if(i%2)sum+=i;
		}
		cout<<"Case "<<count<<": "<<sum<<endl;
		count++;
	}

}

UVA10633

點我進UVA10633

#include<iostream>
using namespace std;

int main(){
 long long nm,m; //都要用long long 

 //n=10m-i -> 現在給定n-m=nm -> n-m= 10m-i-m= 9m-i= nm -> m= (nm+i)/9 -> n= m+nm -> n= (nm+i)/9 +nm
 while(cin>>nm){
  if(nm==0) break;
  
  for(int i=9;i>=0;i--){
   if((nm-i)%9==0){
    m=(nm-i)/9;
    cout<<nm+m<<" ";
   }
  }
  cout<<endl;//要換行,要不然會錯誤 
 }
 return 0;
}

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

尚未有邦友留言

立即登入留言