a215 - 明明愛數數
題目描述
題目要求計算從 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;
}
}