# Greedy# Conditional Logic# Math

h540 - 神奇早餐店(Magic Shop)

🔗 前往 ZeroJudge 原題

題目描述

題目描述了麥夫去一間奇怪的早餐店買飲料,他想買米漿,但店裡常常沒有。他想知道最晚成為第幾個客人才能保證他能買到最後一杯米漿。如果無論如何都買不到米漿,則輸出特定字串。

解題思路

題目要求計算麥夫最晚成為第幾個客人才能保證買到最後一杯米漿。考慮最壞情況,即前面的客人盡可能地購買米漿和可可,使得麥夫必須是最後一個才能買到米漿。

  • 如果米漿數量為0,則無法購買米漿,輸出"?(ˊ?ˋ*)?"。
  • 如果可可數量大於米漿數量,則前面的客人可以交替購買可可和米漿,直到米漿賣完,此時麥夫是第 x+y 個客人。
  • 如果可可數量小於或等於米漿數量,則前面的客人可以交替購買可可和米漿,直到可可賣完,然後剩下的客人只能購買米漿,此時麥夫是第 2*y-1 個客人。

複雜度分析

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

程式碼

#include <iostream>
using namespace std;
long long t,x,y;
int main(){
	cin.tie(0); ios::sync_with_stdio(0);
	cin >> t;
	while(t--){
		cin >> x >> y;
		if(y==0){
			cout << "?(ˊ?ˋ*)?\n";//請去自己複製 
		}
		else if(y>x){
			cout << x+y << '\n'; 
		}
		else{
			cout << y*2-1 << '\n';
		}
	}
}

Discussion