編號為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;
}
輸入兩個數字,計算奇數和
利用迴圈,當該數/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++;
}
}
#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;
}