# Greedy# Math# Simulation

a215 - 明明愛數數

🔗 前往 ZeroJudge 原題

題目描述

題目要求計算從 n 開始連續加總數字,直到總和超過 m 時,需要加總的數字個數。

解題思路

這題可以使用貪心策略。從 n 開始,每次將下一個數字加到總和中,直到總和超過 m。記錄加總的數字個數,即為答案。如果 m 小於 n,則只需要數一個數字即可超過 m

複雜度分析

  • 時間複雜度: O(m-n) 最壞情況下,需要加總到 m,因此時間複雜度與 m-n 成正比。
  • 空間複雜度: O(1) 只需要常數空間來儲存變數。

程式碼

#include <iostream>

using namespace std;

int main(){
	
	long long int n,m,sum=0;
	int i=0;
	while(cin >> n >> m){
		if(m>=n){
			sum=n;
			n++;
		for(i=1;sum<=m;i++){
			sum+=n;
			n++;
		}
		cout << i << endl;}

		else if(m<n){
			cout << 1 << endl;
		}
		sum=0;
	}
	
	
}

Discussion