e623 - 2. PPAP
題目描述
題目要求根據輸入的數字 a,模擬 PPAP (Pen-Pineapple-Apple-Pen) 的歌曲,並輸出對應的歌詞。a 代表歌曲中 "Pen" 和 "Pineapple"、"Apple" 的總數。程式需要計算出 "Pen"、"Pineapple" 和 "Apple" 各出現多少次,並根據出現次數輸出對應的歌詞。
解題思路
這題的核心在於理解 PPAP 歌曲的模式。歌曲的模式是 "Pen", "Pineapple", "Apple", "Pen"。因此,可以將輸入的數字 a 分解成 "Pen"、"Pineapple" 和 "Apple" 的數量。
程式首先計算出最多可以有多少個完整的 "Pen-Pineapple-Apple" 組合。然後,計算剩餘的數量,並根據剩餘數量確定是輸出 "Pen"、"Pineapple"、"Apple" 還是 "Pineapple pen"。
程式使用一個迴圈來計算最多可以有多少個完整的 "Pen-Pineapple-Apple" 組合,然後計算剩餘的數量。最後,根據剩餘數量輸出對應的歌詞。
複雜度分析
- 時間複雜度: O(sqrt(a))
- 空間複雜度: O(1)
程式碼
#include <iostream>
using namespace std;
int main(){
std::ios::sync_with_stdio(false);
cin.tie(NULL);
int a;
while(cin >> a){
int i=1,ans=1;
while((4+4*i)*i/2<a)
i++;
a-=(4+4*(i-1))*(i-1)/2;
while(a>ans*i)
ans++;
if(ans==1)
cout << "Pen\n";
else if(ans==2)
cout << "Pineapple\n";
else if(ans==3)
cout << "Apple\n";
else
cout << "Pineapple pen\n";
}
}