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 正整数序列

UVA 11384 正序数排列

'git push' always needs password and username

hdu 5651 xiaoxin juju needs help