『ACM C++』 PTA 天梯賽練習集L1 | 018-020
微博上有個自稱“大笨鐘V”的傢伙,每天敲鐘催促碼農們愛惜身體早點睡覺。不過由於笨鍾自己作息也不是很規律,所以敲鐘並不定時。一般敲鐘的點數是根據敲鐘時間而定的,如果正好在某個整點敲,那麼“當”數就等於那個整點數;如果過了整點,就敲下一個整點數。另外,雖然一天有24小時,鍾卻是隻在後半天敲1~12下。例如在23:00敲鐘,就是“噹噹噹噹噹噹噹噹噹噹噹”,而到了23:01就會是“噹噹噹噹噹噹噹噹噹噹噹噹”。在午夜00:00到中午12:00期間(端點時間包括在內),笨鍾是不敲的。
下面就請你寫個程式,根據當前時間替大笨鐘敲鍾。
輸入格式:
輸入第一行按照hh:mm
的格式給出當前時間。其中hh
是小時,在00到23之間;mm
是分鐘,在00到59之間。
輸出格式:
根據當前時間替大笨鐘敲鍾,即在一行中輸出相應數量個Dang
。如果不是敲鐘期,則輸出:
Only hh:mm.Too early to Dang.
其中hh:mm
是輸入的時間。
輸入樣例1:
輸出樣例1:
DangDangDangDangDangDangDangDang
輸入樣例2:
輸出樣例2:
Only 07:05.Too early to Dang.
------------------------------------------------ L1-018 ----------------------------------------------------------
註解:這道題難度不大,思路還是蠻清晰的,就是很容易跳坑, 剛開始用整型去存,發現出了點問題,對於整型無法直接接受像01,08,09這樣的數字 ,所以第二次我換用char來處理了, 需要注意的是對於24點和12點的特判問題 。
#include<stdio.h> char data[5]; int main() { for(int i = 0;i<5;i++) scanf("%c",&data[i]); if(data[0] == '1' && data[1] >'2') { for(int i = 0;i<data[1]-'0'-2;i++) printf("Dang"); if(data[3] == data[4] && data[3] == '0') return 0; else printf("Dang"); } else if(data[0] == '1' && data[1] == '2') { if(data[3] == data[4] && data[3] == '0') { printf("Only %c%c:%c%c.Too early to Dang.",data[0],data[1],data[3],data[4]); return 0; } else printf("Dang"); } else if(data[0] == '2' && data[1] <='4') { if(data[1] == '4') { printf("Only 00:00.Too early to Dang."); return 0; } for(int i = 0;i<data[1]-'0'+8;i++) printf("Dang"); if(data[3] == data[4] && data[3] == '0') return 0; else printf("Dang"); } else printf("Only %c%c:%c%c.Too early to Dang.",data[0],data[1],data[3],data[4]); return 0; }
------------------------------------------------ L1-019 ----------------------------------------------------------
誰先倒
划拳是古老中國酒文化的一個有趣的組成部分。酒桌上兩人划拳的方法為:每人口中喊出一個數字,同時用手比劃出一個數字。如果誰比劃出的數字正好等於兩人喊出的數字之和,誰就輸了,輸家罰一杯酒。兩人同贏或兩人同輸則繼續下一輪,直到唯一的贏家出現。
下面給出甲、乙兩人的酒量(最多能喝多少杯不倒)和划拳記錄,請你判斷兩個人誰先倒。
輸入格式:
輸入第一行先後給出甲、乙兩人的酒量(不超過100的非負整數),以空格分隔。下一行給出一個正整數N
(
≤
1
0
0),隨後
行,每行給出一輪划拳的記錄,格式為:
甲喊 甲劃 乙喊 乙劃
其中喊
是喊出的數字,劃
是劃出的數字,均為不超過100的正整數(兩隻手一起劃)。
輸出格式:
在第一行中輸出先倒下的那個人:A
代表甲,B
代表乙。第二行中輸出沒倒的那個人喝了多少杯。題目保證有一個人倒下。注意程式處理到有人倒下就終止,後面的資料不必處理。
輸入樣例:
輸出樣例:
A 1
------------------------------------------------ L1-019 ----------------------------------------------------------
註解:水題,難度不大,注意一下函式判斷位置就好
#include<stdio.h> int max_a,max_b,times; int call_a,call_b,out_a,out_b; int temp_a,temp_b; int main() { scanf("%d %d %d",&max_a,&max_b,×); temp_a = temp_b = 0; for(int i = 0;i<times;i++) { scanf("%d %d %d %d",&call_a,&out_a,&call_b,&out_b); int sum = call_a + call_b; if(out_a == sum && out_b == sum) continue; else { if(out_a == sum) temp_a++; if(out_b == sum) temp_b++; } if(temp_a > max_a) { printf("A\n%d\n",temp_b); break; } if(temp_b > max_b) { printf("B\n%d\n",temp_a); break; } } return 0; }
------------------------------------------------ L1-020 ----------------------------------------------------------
帥到沒朋友
當芸芸眾生忙著在朋友圈中發照片的時候,總有一些人因為太帥而沒有朋友。本題就要求你找出那些帥到沒有朋友的人。
輸入格式:
輸入第一行給出一個正整數N
(
≤
1
0
0),是已知朋友圈的個數;隨後
行,每行首先給出一個正整數
(
≤
1
0
0
0),為朋友圈中的人數,然後列出一個朋友圈內的所有人——為方便起見,每人對應一個ID號,為5位數字(從00000到99999),ID間以空格分隔;之後給出一個正整數
(
注意:沒有朋友的人可以是根本沒安裝“朋友圈”,也可以是隻有自己一個人在朋友圈的人。雖然有個別自戀狂會自己把自己反覆加進朋友圈,但題目保證所有K
超過1的朋友圈裡都至少有2個不同的人。
輸出格式:
按輸入的順序輸出那些帥到沒朋友的人。ID間用1個空格分隔,行的首尾不得有多餘空格。如果沒有人太帥,則輸出No one is handsome
。
注意:同一個人可以被查詢多次,但只輸出一次。
輸入樣例1:
輸出樣例1:
輸入樣例2:
輸出樣例2:
No one is handsome
------------------------------------------------ L1-020 ----------------------------------------------------------
註解:這道題思路簡單,建一個超過五位數的陣列去存放已有的資料即可,如find[100000];。然後這道題有一個重點需要注意,那就是對最後結果的處理:
%Nd -> 表示輸出的整型寬度至少為N位,右對齊,位數大於5則輸出實際位數. 如:printf("%5d",1)輸出: 1(不足用空格填充);
%0Nd -> 表示輸出的整型寬度至少為N位,不足N位用0填充. 如: printf("%05d",1) 輸出:00001;
AC程式碼:
#include<stdio.h> int times,friends,ans; int find[100000]; int main() { scanf("%d",×); ans = 0; for(int i = 0;i<times;i++) { scanf("%d",&friends); for(int u = 0;u<friends;u++) { int temp; scanf("%d",&temp); if(friends != 1) find[temp]++; } } scanf("%d",×); for(int i = 0;i<times;i++) { scanf("%d",&friends); if(find[friends] == 0) { find[friends] = -1; if(ans != 0) printf(" "); printf("%05d",friends); ans++; } } if(ans == 0) printf("No one is handsome"); return 0; }
注:如果有更好的解法,真心希望您能夠評論留言貼上您的程式碼呢~互相幫助互相鼓勵才能成長鴨~~