本人看了下其餘同志代碼,以爲我哦的思路簡介ios
【題目描述】
國王將金幣做爲工資,發放給忠誠的騎士。第1天,騎士收到一枚金幣;以後兩天(第2天和第3天)裏,天天收到兩枚金幣;以後三天(第四、五、6天)裏,天天收到三枚金幣;以後四天(第七、八、九、10天)裏,天天收到四枚金幣……這種工資發放模式會一直這樣延續下去:當連續n天天天收到n枚金幣後,騎士會在以後的連續n+1天裏,天天收到n+1枚金幣(n爲任意正整數)。
你須要編寫一個程序,肯定從第一天開始的給定天數內,騎士一共得到了多少金幣。
【輸入】
一個整數(範圍1到10000),表示天數。
【輸出】
騎士得到的金幣數。
【輸入樣例】
6
【輸出樣例】
14spa
#include<iostream> using namespace std; int main() { int n; cin >> n; int h=0;//記錄前一個i int l = 1 , i , sum = 0; for( i=1;i<=n;i+=l)//這個過程請讀者帶數運行如下就理解了 { sum+=l*(i-h);//總的金幣相加 l++;//下一次給的金幣數 h=i;//記錄前一個i,(i-h)就課以獲得發工資都相同得天數 } if(i!=n)//若是不相等就說明sum小於真實值,就是不知足下一個一樣工資得天數!=(i-h)個; { sum+=(n-h)*l;//將剩餘得加起來; } cout<<sum; }
我的認爲這個時間複雜度很小,理解也比較容易;code
點個贊吧老哥《0.0》;ci