# Bit Manipulation# Conditional Operator# One-liner

d073(v2) - Error

🔗 前往 ZeroJudge 原題

題目描述

題目要求讀取一個整數 a,然後根據 scanf 的返回值判斷是否成功讀取。如果成功讀取,則計算 (a + 2) / 3 的值並輸出。如果讀取失敗,則輸出 0。

解題思路

這題利用了 scanf 的返回值特性。scanf 成功讀取時返回讀取到的參數數量,否則返回 EOF。程式碼使用條件運算符 ? : 簡潔地實現了這個邏輯。printf 函數的返回值被賦值給 a,但實際上 printf 的返回值並不重要,關鍵在於 scanf 的返回值。

複雜度分析

  • 時間複雜度: O(1)
  • 空間複雜度: O(1)

程式碼

#include <stdio.h>
int main(){
	int a(printf("%d\n",scanf("%d",&a)?(a+2)/3:0));
}

Discussion