uva 11384 Help is needed for Dexter
阿新 • • 發佈:2017-09-22
print int https != () color div dex eof
https://vjudge.net/problem/UVA-11384
題意:
給出一個數n,任務是用最少的操作次數把序列1,2,3,。。。,n中所有的數都變成0。
每次操作可以從序列中選擇一個或者多個整數,減去同一個相同的正整數。
輸出最少的操作次數。
思路:
列了奇數和偶數的式子發現,每次減去最大值的(1 / 2) + 1,就可以使操作次數最少為log2(N) + 1,求對數的時候自己寫函數來求。
直覺:)
代碼:
1 #include <stdio.h> 2 #include <string.h> 3 4 int cal(long long n) 5 { 6long long a = 1; 7 8 int cnt = 0; 9 10 while (a <= n) 11 { 12 a <<= 1; 13 cnt++; 14 } 15 16 return cnt - 1; 17 } 18 19 int main() 20 { 21 long long n; 22 23 while (scanf("%lld",&n) != EOF) 24 { 25 int ans = cal(n) + 1; 2627 printf("%d\n",ans); 28 } 29 30 return 0; 31 }
uva 11384 Help is needed for Dexter