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: | 主程式結束。 |