1.剪刀,石頭,布
(hps.cpp)
【題目描述】
你可能聽說過“剪刀,石頭,布”的游,許多小朋友都喜歡玩。
游戲規則很簡單:比賽雙方同時數到3,然后同時出一個手勢,代表“剪刀”、“石頭”或“布”。“石頭”勝“剪刀”,“剪刀”勝“布”,“布”勝“石頭”。舉個例子,第一個小朋友出“石頭”,第二個小朋友出“布”,則第二個小朋友勝利。當然,也可以“平局”(如果兩個小朋友手勢相同的話)。
現在給出兩個小朋友的手勢,請您編程判斷第一個小朋友是勝了這局、輸了這局還是平了這局。
【輸入格式】
一行,包含兩個整數:A和B,分別表示兩個小朋友的手勢。A和B的值只可能為0、1、2,0代表代表“剪刀”、1代表“石頭”,2代表“布”。
【輸出格式】
一行,包含一個字符,字符只能為“W”、“L”、“F”之一。第一個小朋友如果勝了這局,則輸出“W”;如果第一個小朋友輸了這局,則輸出“L”;如果第一個小朋友平了這局,則輸出“F”。
【樣例輸入輸出】
樣例輸入(hps.in) 樣例輸出(hps.out)
1 2 L
2.間諜
(spy.cpp)
【題目描述】
現在有9個科學家正在一起研究機密問題,但據可靠訊息,其中有兩人是間諜,只有7個人是真正的科學家。cyh同學想將這兩個間諜揪出來。當然,這9人都聲稱自己不是間諜。幸運的是,每個人都戴著一頂帽子,帽子上有一個小于100的正整數。根據最新的準確訊息,真正的7位科學家戴著的帽子上的數字之和剛好等于100。由于cyh同學要準備期終考試,他請您撰寫一個程式,找出真正的7個科學家。
【輸入格式】
輸入共9行。
每行一個整數,第i行的整數表示第i個科學家戴的帽子上的正整數。
【輸出格式】
輸出共7行(因為只有7個科學家)。
每行一個整數,第i行的整數表示第i個科學家戴的帽子上的正整數,注意輸出的順序是按去掉兩個間諜后的順序。
【樣例輸入輸出1】
樣例輸入(spy.in) 樣例輸出(spy.out)
1
5
6
7
10
12
19
29
33 1
5
6
7
19
29
33
3.比賽
(contest.cpp)
【題目描述】
yyd是位數學愛好者,他參加了網上的的數學比賽,成績公布后,他很想知道自己的成績到底排第幾,現在請你幫他編一個程式,要求輸入一個成績,就能知道相應的名次。注意:同分的按相同名次算,且只算一次。
【輸入格式】
第一行:一個整數n(n ≤ 30000)
第二行:n個正整數(這些數不大于1000)。
第三行:一個整數,需要查詢的分數。
【輸出格式】
輸出共一行,包含一個整數,表示查詢成績的名次。
【樣例輸入輸出】
樣例輸入(contest.in) 樣例輸出(contest.out)
7
30 50 80 60 20 50 60
50 4
4.0的個數
(num.cpp)
【問題描述】
輸入一個正整數N(N ≤ 1000000000),輸出N !尾部的0的個數。(N!=1×2×3×……×N)。
【輸入】
輸入檔案包括一個不超過1000000000的正整數n。
【輸出】
輸出檔案只需輸出一個整數,表示N !尾部的0的個數。
【樣例】
樣例輸入(num.in) 樣例輸出(num.out)
5 1
T1:
第一題,
沒什么好講的,
if else 就可以了,
分別寫出輸贏及平局的條件就行了。
具體條件看這里:
贏(W):
a=1,b=0
a=2,b=1
a=3,b=2
輸(L):
a=0,b=1
a=1,b=2
a=2,b=3
平(F):
a=b
所以,
主函式內的代碼如下:
(別抄,因為是錯的!)

freopen("hps.in","r",stdin);
freopen("hps.out","w",stdout);//檔案操作別忘記寫!
cin>>a>>b;//讀入a和b
if(a==b)
{
cout<<"F";//如果a與b相等,那么就平局了,輸出F。
}
else if((a==0&&b==1)||(a==1&&b==2)||(a==2&&b==0))
{
cout<<"L";//如果為以上數值,那么就輸了,輸出L。
}
else cout<<"W";//如果前面兩者都不是,那就贏了,輸出W。
完整代碼如下:
#include <bits/stdc++.h>
using namespace std;
int a,b;
int main()
{
freopen("hps.in","r",stdin);
freopen("hps.out","w",stdout);
cin>>a>>b;
if(a==b)
{
cout<<"F";
}
else if((a==0&&b==1)||(a==1&&b==2)||(a==2&&b==0))
{
cout<<"L";
}
else cout<<"W";
return 0;
}
T2:
這一題如果用普通“九重回圈”來做的話,
應該夠嗆,
因為9的9次方早超時了,
所以需要更好的方法。
有人說了,
可以用“七重回圈”呀!
小編用計算器算了一遍,
的確木有超時,
不過小編建議,
可以用更簡便的方法!





其實你想,
要找出科學家的有哪些,
只需找出間諜有哪些,
而七個科學家帽子上的數之和為100,
那么兩個間諜帽子上的數之和,
就是所有人帽子上的數之和-100,
這樣一來,
只要找出
哪兩個人帽子上的數之和,
等于所有人帽子上的數之和-100,
那么,
這兩個人便是間諜!
程式實作如下:
for(i=1;i<=9;i++){
cin>>a[i];
s+=a[i];
}
首先,
先用回圈將每個帽子上的數字,
并將其累加
s-=100;
將總數值減去100,
便是兩個間諜帽子上的數之和
for(i=1;i<=9;i++){
for(j=i+1;j<=9;j++){
if(a[i]+a[j]==s){
a[i]=0;
a[j]=0;
break;
}
}
}
使用雙重回圈逐一列舉,
如果相加等于s,
則兩人為間諜,
并且把兩人值設為0
for(i=1;i<=9;i++){
if(a[i]!=0)cout<<a[i]<<endl;
}
最后的輸出部分,
如果不是0,
那就是貨真價實的科學家。
完整代碼如下:
#include <bits/stdc++.h>
using namespace std;
long long a[8],p,q,i,s,j;
int main()
{
freopen("spy.in","r",stdin);
freopen("spy.out","w",stdout);
for(i=1;i<=9;i++){
cin>>a[i];
s+=a[i];
}
s-=100;
for(i=1;i<=9;i++){
for(j=i+1;j<=9;j++){
if(a[i]+a[j]==s){
a[i]=0;
a[j]=0;
break;
}
}
}
for(i=1;i<=9;i++){
if(a[i]!=0)cout<<a[i]<<endl;
}
return 0;
}
T3:
第三題,
不用說了吧,
這么典型的題目,
要是你都不會做,
你嘛……大概……算是……
“超級萌新”了



好了,
廢話不多說,
即將啟動豆腐渣工程!
首先,
將輸進去的數進行排序,
然后在從大到小查找k,
找到了就輸出序號。
沒錯,
這題就這么簡單~
代碼我就不多說了,
自己研究吧!
#include <bits/stdc++.h>
using namespace std;
long long a[30001],i,n,k;
int main()
{
freopen("contest.in","r",stdin);
freopen("contest.out","w",stdout);
cin>>n;
for(i=1;i<=n;i++)cin>>a[i];
cin>>k;
sort(a+1,a+1+n);
for(i=n;i>=1;i--){
if(a[i]==k){
cout<<n-i+1;
return 0;
}
}
return 0;
}
T4:
也許你不太相信自己的眼睛,
沒錯,
你沒看錯,
N(N ≤ 1000000000)
所以說,
這題你想用什么
遞推、模擬……
我就仨字兒:
開 玩 笑 !
這題如果用高精度的話,
也不可能!
所以
一籌莫展的你,
請開始找規律!!!
首先
1~4
末尾沒有一個0,
5~9
末尾只有一個0,
……
……
后略。
所以最后0的個數,
便是(n/5)個(n/5的次方)。
代碼如下:
#include <bits/stdc++.h>
using namespace std;
long long n,s,i;
int main()
{
freopen("num.in","r",stdin);
freopen("num.out","w",stdout);
cin>>n;
for(i=5;i<=n;i*=5){
s=s+n/i;
}
cout<<s;
return 0;
}
好了,那么本片題解到此結束,蟹蟹!
uj5u.com熱心網友回復:



轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/173593.html
標籤:C++ 語言
上一篇:C語言 新手問題 如果輸入任意數量數字 并判斷其中是否有9的倍數
下一篇:c++頭檔案的一些疑問
