uva 11384 Help is needed for Dexter
Posted Omz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uva 11384 Help is needed for Dexter相关的知识,希望对你有一定的参考价值。
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 { 6 long 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; 26 27 printf("%d\n",ans); 28 } 29 30 return 0; 31 }
以上是关于uva 11384 Help is needed for Dexter的主要内容,如果未能解决你的问题,请参考以下文章
[UVa 11384]Help is needed for Dexter
UVa11384 Help is needed for Dexter (思维)
UVa 11384 Help in needed for Dexter 正整数序列