iT邦幫忙

2021 iThome 鐵人賽

DAY 13
0
自我挑戰組

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

Day 0xD UVa10783 Odd Sum

題意

  • 輸入兩個數字,輸出兩個數字間的奇數和
  • 需要注意的有:
    1. 輸入測資數 T
    2. 每筆測資有兩行,分別代表區間起始和結尾 (0 ≤ a ≤ b ≤ 100)
    3. 輸出第幾筆測資 + 奇數項和,格式:
      • Case _: _

解法

  • 先讀入測資數 T,再用 for 迴圈分別讀入 ab 兩數
    int T;
    int a, b;
    
    scanf("%d", &T);
    
    for(i = 0; i < T; i++){
        scanf("%d %d", &a, &b);
        ...
    }
    
  • 透過 if 先過濾掉答案為 0 的情況
    if(a == b && a % 2 == 0){
        printf("Case %d: 0\n", time);
        continue;
    }
    
  • 剩下情況用 for 迴圈加上 if 處理,若遇到奇數就累加到 sum,最後再輸出即可
    for(j = a; j <= b; j++){
        if(j % 2 == 1){
            sum = sum + j;
        }
    }
    printf("Case %d: %d\n", time, sum);
    
  • C code
    #include<stdlib.h>
    
    int main(){
    
        int T;
        int sum;
        int i, j;
        int a, b;
        int time = 0;
    
        scanf("%d", &T);
    
        for(i = 0; i < T; i++){
    
            scanf("%d %d", &a, &b);
    
            time++;
            sum = 0;
    
            if(a == b && a % 2 == 0){
                printf("Case %d: 0\n", time);
                continue;
            }
            for(j = a; j <= b; j++){
                if(j % 2 == 1){
                    sum = sum + j;
                }
            }
            printf("Case %d: %d\n", time, sum);
        }
    
        return 0;
    }
    

上一篇
Day 0xC UVa10170 The Hotel with Infinite Rooms
下一篇
Day 0xE UVa10812 Beat the Spread!
系列文
用 C & C++ 帶你手把手解 UVa 一顆星選集30

尚未有邦友留言

立即登入留言