1512: 喫薯條
描述
題目描述:
薯片這次又遇到問題了==
薯片有n個薯條棒,第i個薯條棒的長度爲i,由於薯片能瞬間移動,所以薯片能在1秒內從這n個薯條棒裏面選擇一個或者多個,喫掉同樣長的一部分,
並且被喫掉部分的長度是正整數,問薯片至少多少時間能把這n個薯條棒都喫完?
輸入:
多組數據輸入,每組數據第一行輸入一個n(1<=n<=109).
輸出:
對於每組數據,輸出最短的時間.
樣例輸入
3
4
樣例輸出
2
3
這道題用到了貪心算法,之前沒有遇到過,在聽過大佬的講解的思路之後,發現沒有想象中那麼難,當時就是沒有動筆算一算好像也沒有讀明白題意,其實在發現了規律之後,發現其實很簡單,在列舉一些簡單的樣例算過之後,每次在最中間開始喫花費的時間是最少的代
碼用到了換底公式,實質就是除以二找最中間的結果就是答案
#include<stdio.h>
#include<math.h>
int main()
{
int a,x;
while(scanf("%d",&a)!=EOF)
{
x=(int) (log(a)/log(2)+1);
printf("%d\n",x);
}
}
運行結果
通過率
通過的數據:
結果 | 耗時 | 內存 |
---|---|---|
通過 | 0 | 1916928 |
通過 | 0 | 1921024 |
未通過的數據:
結果 | 耗時 | 內存 |
---|---|---|