iT邦幫忙

2021 iThome 鐵人賽

DAY 12
0
自我挑戰組

用 C & C++ 帶你手把手解 UVa 一顆星選集系列 第 12

Day 0xC UVa10170 The Hotel with Infinite Rooms

題意

  • 輸入第一組旅行團人數 S,輸出酒店內第 D 天的入住人數
  • 需要注意的有:
    1. 有順序的重複輸入
    2. 每筆測資有兩整數
      • S 代表第一組旅行團人數 (第幾筆測資就是第幾組)
      • D 代表欲查找的天數 (https://chart.googleapis.com/chart?cht=tx&chl=%241%20%5Cleq%20D%20%5Clt%2010%5E%7B15%7D%24)
    3. HaluaRuti hotel 濃縮版規則
      • 房間無限
      • 同一時間只能有一組旅行團入住
      • 旅行團有 n 名團員就入住 n
      • 每組旅行團人數比前一團多一人
      • 每團都在早晨入住,第 n 天晚上退房

解法

  • while 迴圈重複輸入直到 EOF,因為 D 的範圍關係,用 long long int 型別
    long long S, D;
    
    while(scanf("%lld %lld", &S, &D) != EOF){
        ...
    }
    
  • 宣告同為 long long int 型別的 num 代表經過天數,並初始化為第一組旅行團的天數 (即人數) S;再用 while 迴圈檢查是否到達第 D 天,若天數未達,則旅行團人數 S++ 增加一人 (換下一組旅行團入住),並更新天數 num + S;超過就跳出迴圈並輸出結果
    long long num = S;
    
    while(num < D){
        S++;
        num = num + S;
    }
    
    printf("%lld\n", S);
    
  • C code
    #include<stdio.h>
    
    int main(){
    
        long long S, D;
    
        while(scanf("%lld %lld", &S, &D) != EOF){
    
            long long num = S;
    
            while(num < D){
                S++;
                num = num + S;
            }
    
            printf("%lld\n", S);
    
        }
    
        return 0;
    }
    

上一篇
Day 0xB UVa948 Fibonaccimal Base
下一篇
Day 0xD UVa10783 Odd Sum
系列文
用 C & C++ 帶你手把手解 UVa 一顆星選集30

尚未有邦友留言

立即登入留言