我在代碼上編碼爲simple question。它讀起來像這樣:瞭解給定代碼的時間複雜度
Vasya有n雙襪子。在每天早上,瓦西亞在上學之前必須穿上一雙襪子。當他晚上回家時,Vasya脫掉舊襪子扔掉。每一天(在數字m,2m,3m ......的日子),媽媽都會向Vasya買一雙襪子。她在晚上做得很晚,所以Vasya在第二天之前不能穿上新的襪子。在Vasya用完襪子之前,連續有多少天過去?
輸入
單一行包含兩個整數n和m(1≤N≤100; 2≤米≤100),用空格隔開。
輸出
打印一個整數 - 答案的問題。
我的解決辦法是這樣的:
int main()
{
int res,i,n,m;
cin >> n >> m;
i = 1;
res = n;
while(res >= i*m)
{
res++;
i++;
}
cout << res;
return 0;
}
應該是什麼時間複雜度?它絕對不是O(n),因爲我們正在逐步增加m。它會記錄(基準米)?但也是原來的n隨着時間而增加!
請說明一些理由。
可能重複[大O,你如何計算/近似它?] (http://stackoverflow.com/questions/3255/big-o-how-do-you-calculate-approximate-it) –