# Greedy# Arithmetic# Simulation

d827 - 買鉛筆

🔗 前往 ZeroJudge 原題

題目描述

題目要求計算購買指定數量鉛筆所需的最低金額。鉛筆可以單支購買(5元/支)或一打購買(50元/12支)。目標是根據輸入的班級人數,計算出購買所需鉛筆的總成本,且不允許多買。

解題思路

此題採用貪心策略。優先購買一打鉛筆,因為一打的單價較低。在購買一打鉛筆的過程中,不斷減少班級人數,直到剩餘人數不足以購買一打。然後,再根據剩餘人數購買單支鉛筆。

複雜度分析

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

程式碼

#include <iostream>

using namespace std;

int main (){
	int a=0;
	int m=0;
	while(cin >> a){
		while(a>=12){
			a-=12;
			m+=50;
		}
		while(a>=1){
			a-=1;
			m+=5;
		}
		cout << m << endl;
		a=0;
		m=0;
	}

}

Discussion