flyawayl的博客

真正的强者从不畏惧黎明前的黑暗!

UVA - 11636 Hello World! (贪心)

思路:复制次数最少并且可以部分复制,那么贪心地让当前尽量多的复制,如果最后一次复制会超过n,那就部分复制。即满足(1<<x)n并且x尽量小。


AC代码

#include <stdio.h>
const int maxn = 20;
int bit[maxn];

void init() {
    bit[0] = 1;
    for(int i = 1; i < maxn; i++) {
        bit[i] = bit[i-1] * 2;
    }
}

int main() {
    init();
    int n, kase = 1;
    while (scanf("%d", &n) == 1 && n > 0) {
        int ans;
        for(ans = 0; ans < maxn; ans++) {
            if(bit[ans] >= n) {
                break;
            }
        }
        printf("Case %d: %d\n", kase++, ans);
    }
    return 0;
}

如有不当之处欢迎指出!

阅读更多
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/flyawayl/article/details/77124593
文章标签: 贪心
个人分类: 贪心
所属专栏: 算法之路
上一篇PAT1118. Birds in Forest (并查集)
下一篇合唱团 (线性dp)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭