2015年5月22日 星期五

d485:我愛偶數(6)

d485: 我愛偶數(6)

更新時間:2016/12/20
內容
  文文很喜歡偶數,他甚至有收集偶數的習慣。你給他一個範圍的連續整數,他就會把其中的偶數留下來收藏。如今他又拿到了一個範圍的整數,請問他這次收藏了幾個偶數?對文文來說,0 也算是一個偶數哦!
輸入說明
  輸入只有一行,其中含有兩個由空白隔開的整數 a, b (0 ≤ a ≤ b ≤ 2147483647)。
輸出說明
  輸出一個整數,代表 a 與 b 之間 (含 a 與 b) 一共有多少個偶數。
範例輸入
  1 4
範例輸出
  2
提示
  你可以只用算術運算子,而不用 if 指令來完成這題嗎?



想一想,再看解答~


我的解題想法:
  「b之前的所有偶數」減去「a之前的所有偶數」;但還需要判斷a是不是偶數,如果是的話加1,不是的話加0。



程式碼:
#include <stdio.h>
int main(void){
    int a;
    int b;
    scanf("%d%d",&a,&b);
    printf("%d",(b/2) - (a/2) + ((a%2)+1)%2 );
    return 0;
}
程式碼解析
#1:引入標準輸入/輸出串流。
#2:主程式開始,回傳引數int,沒有參數。
#3:宣告一個整數(int)變數「a」,範圍–2,147,483,648 到 2,147,483,647。
#4:宣告一個整數(int)變數「b」,範圍–2,147,483,648 到 2,147,483,647。
#5:從標準輸入讀取格式化數據。讀取2個整數(%d%d),依序指定值給「a」、「b」。
#6:將格式化數據顯示到標準輸出。輸出1個整數(%d)「(b/2) - (a/2) + ((a%2)+1)%2」。
#7:主程式回傳整數「0」。
#8:主程式結束。