返回列表 發帖

npsc2019_C.外星時間

網際網路程式設計全國大賽 國中組初賽
C.外星時間
Problem ID: time
在一個遙遠的星球上,存在著一個神秘的外星文明。這個文明的發展程度並不高,比當前
的人類文明更為落後。其中一個值得注意的特點是,這個文明剛發展出自己的時間計數系統。
這個外星文明的時間計數系統如下:他們將一天分為 A 等分,為了方便,我們將每一等分
稱為一「外星小時」;每一「外星小時」再分為 B 等分,將每一等分稱為一「外星分鐘」;每一
「外星分鐘」再分為 C 等分,將每一等分稱為一「外星秒」。外星時間表示法則與地球上的時間
相似:將外星小時、外星分鐘、外星秒的十進位數值(沒有任何前置的 0)以冒號隔開,而一
天的第一個外星小時的數值是 0,最後一個外星小時的數值是 A − 1,而外星分鐘與外星秒的計
數方式也類似,都是從 0 開始並分別以 B − 1、C − 1 作為最後一個外星分鐘與外星秒。
由於這個外星文明的數學還沒有很先進,所以這些外星人還不知道如何對時間進行加法。
為了展示人類文明的先進,請你寫一個程式計算外星時間的加法:給你一個外星時間,請計算
這個外星時間在經過 x 外星小時、y 外星分鐘又 z 外星秒之後會是甚麼外星時間?
Input
第一行有三個以空白隔開的正整數 A, B, C,意義如題目所述。
第二行有一個正整數 N,代表接下來有幾組外星時間加法的問題。
接下來的 N 行,每行有一個外星時間 S(以外星時間表示法表示)和三個非負整數 x, y, z,
代表一個外星時間加法的問題。
• N ≤ 105
• A, B, C ≤ 109
• S 是一個合法的外星時間表示法,其中 S 含的外星小時、外星分鐘及外星秒都會在對應
的範圍之內
• x < A
• y < B
• z < C
Output
對於每個外星時間加法問題,請輸出一個以外星時間表示法表示的時間,代表 S 過了 x 外
星小時、y 外星分鐘又 z 外星秒的時間(以外星時間表示法表示)。
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5.     int A,B,C;        //外星時間
  6.     cin>>A>>B>>C;        //ex:2 20 30
  7.    
  8.     int N;        //N組外星時間加法的問題
  9.     cin>>N;        //ex:3
  10.     char c1,c2;  //:
  11.    
  12.     int x1,y1,z1;        //是一個合法的外星時間表示法
  13.     int x,y,z;                //x, y, z,代表一個外星時間的加法
  14.    
  15.     for(int i=0;i<N;i++)
  16.     {
  17.         cin>>x1>>c1>>y1>>c2>>z1;        //ex:1:19:2
  18.         cin>>x>>y>>z;        //ex:0 1 7
  19.         
  20.         z1=z1+z;
  21.         if(z1>=C)
  22.         {
  23.                 y1=y1+z1/C;
  24.                 z1=z1%C;
  25.         }
  26.         
  27.         y1=y1+y;
  28.         if(y1>=B)
  29.         {
  30.                 x1=x1+y1/B;
  31.                 y1=y1%B;
  32.         }
  33.         x1=x1+x;
  34.         if(x1>=A)
  35.                 {
  36.                         x1=x1%A;
  37.                 }
  38.         cout<<x1<<":"<<y1<<":"<<z1<<"\n";
  39.     }
  40. }
複製代碼

此帖僅作者可見

TOP

此帖僅作者可見

TOP

返回列表