# Bit Manipulation# Greedy# Simulation

k194 - 文文把妹日記 (之心靈密碼)

🔗 前往 ZeroJudge 原題

題目描述

題目描述了文文用五張卡片玩一個猜數字的遊戲,珊珊心中想一個 1 到 31 之間的數字。文文根據珊珊對每張卡片是否有該數字的回答,判斷珊珊心裡的數字。題目要求根據珊珊的五個回答(1 或 0,1 代表有,0 代表沒有),計算出珊珊心裡的數字。實際上,珊珊心裡的數字等於左邊卡片上最小數字的總和。

解題思路

題目給定的輸入是珊珊對五張卡片的回答,1 表示珊珊的數字在該卡片上,0 表示不在。程式碼根據珊珊的回答,將對應的卡片標記為左邊(1)或右邊(0)。然後,程式碼計算左邊卡片上最小數字的總和。題目中給定的 a[5] 陣列儲存了每張卡片上的最小數字。程式碼遍歷珊珊的回答,如果回答是 1,則將對應卡片的最小數字加到 ans 變數中。最後,程式碼輸出 ans,即珊珊心裡的數字。

複雜度分析

  • 時間複雜度: O(5) - 程式碼遍歷五個輸入,執行固定數量的操作。因此,時間複雜度是常數時間。
  • 空間複雜度: O(1) - 程式碼使用固定數量的變數,不隨輸入大小而變化。因此,空間複雜度是常數空間。

程式碼

#include <iostream>
using namespace std;
string s;
int a[5]={16,8,4,2,1},ans;
int main(){
	cin >> s;
	for(int i=0;i<5;++i){
		if(s[i]=='1'){
			ans+=a[i];
		}
	}
	cout << ans;
}

Discussion