Kattis - cokolada【水】

题意

有一个人想吃巧克力,但是巧克力都是按照 2 的幂次的数量包装的,然后他想吃一定数量块的巧克力,然后可以敲碎,每次敲碎都分成两半,比如四块装的分成两块就是二块和二块,但是只能买一块,求要买的那块的数量,和要敲几次

思路

因为数据比较小,可以先打一个 2 的幂次的表,然后二分查找最少的那个数量,然后每次都剪掉一半,然后往下找,直到减为0 就跳出 然后用 大的减最小的那个数 就可以了

AC代码

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include <cstdlib>
#include <ctype.h>
#include <numeric>
#include <sstream>
using namespace std; typedef long long LL;
const double PI = 3.14159265358979323846264338327;
const double E = 2.718281828459;
const double eps = 1e-6;
const int MAXN = 0x3f3f3f3f;
const int MINN = 0xc0c0c0c0;
const int maxn = 1e5 + 5;
const int MOD = 1e9 + 7;
int vis[21];
int k, ans, flag; int main()
{
for (int i = 0; i < 21; i++)
vis[i] = 1 << i;
cin >> k;
for (int i = 0; i < 21; i++)
{
if (vis[i] >= k)
{
ans = vis[i];
flag = i;
break;
}
}
if (vis[flag] == k)
printf("%d %d\n", ans, 0);
else if (k % 2)
printf("%d %d\n", ans, flag);
else
{
k -= ans/2;
int i;
for (i = flag; i >= 0; i--)
{
if (k >= vis[i])
k -= vis[i];
if (k == 0)
break;
}
printf("%d %d\n", ans, flag - i);
}
}

Kattis - cokolada【水】的更多相关文章

  1. Kattis - abc 【水】

    题意 给出三个数,然后给出一个顺序,有ABC三个字母构成, A是最大的数字 B是中间的数字 C是最小的数字 根据 ABC的顺序 给出 数字的顺序 思路 先排序一下,然后用 MAP 双向标记一下 AC代 ...

  2. Kattis - register 【水】

    题意 就是 有一堆容器,然后可以执行加的操作,每个容量是 2, 3, 5, 7, 11, 13, 17, 19 然后 有进位 比如第一个 容器,到2了,就会重置为0,然后 下一个容器+ 1, 但是要保 ...

  3. E - Emptying the Baltic Kattis - emptyingbaltic (dijkstra堆优化)

    题目链接: E - Emptying the Baltic Kattis - emptyingbaltic 题目大意:n*m的地图, 每个格子有一个海拔高度, 当海拔<0的时候有水. 现在在(x ...

  4. HDOJ 2317. Nasty Hacks 模拟水题

    Nasty Hacks Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  5. Openjudge 1.13-21:最大质因子序列(每日两水)

    总时间限制:  1000ms 内存限制:  65536kB 描述 任意输入两个正整数m, n (1 < m < n <= 5000),依次输出m到n之间每个数的最大质因子(包括m和n ...

  6. [LeetCode] Container With Most Water 装最多水的容器

    Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). ...

  7. 如何装最多的水? — leetcode 11. Container With Most Water

    炎炎夏日,还是呆在空调房里切切题吧. Container With Most Water,题意其实有点噱头,简化下就是,给一个数组,恩,就叫 height 吧,从中任选两项 i 和 j(i <= ...

  8. Codeforces 刷水记录

    Codeforces-566F 题目大意:给出一个有序数列a,这个数列中每两个数,如果满足一个数能整除另一个数,则这两个数中间是有一条边的,现在有这样的图,求最大联通子图. 题解:并不需要把图搞出来, ...

  9. Bzoj3041 水叮当的舞步

    Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 132  Solved: 75 Description 水叮当得到了一块五颜六色的格子形地毯作为生日礼物 ...

随机推荐

  1. javascript获取html标记的的绝对定位值

    function getElementLeft(element) { var actualLeft = element.offsetLeft; var current = element.offset ...

  2. 【BZOJ】2018: [Usaco2009 Nov]农场技艺大赛(暴力)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2018 精度问题我也是醉了.. #include <cstdio> #include &l ...

  3. java三大框架SSH(Struts2 Spring Hibernate)

    http://www.cnblogs.com/qiuzhongyang/p/3874149.html

  4. 解决百度地图Fragment切换黑屏问题

    https://blog.csdn.net/rentalphang/article/details/52076330 轻松解决啦!

  5. angualar入门学习-- 自定义指令 认识属性

    个AngularJS指令在HTML代码中可以有四种表现形式: 1.作为一个新的HTML元素来使用 2.作为一个元素的属性来使用 3.作为一个元素的类来使用 4.作为注释来使用 一.创建指令 angul ...

  6. Instagram发布动态自动裁剪照片说明

    发布Ins时,照片总是被截取一截,感觉很不爽...然后就仔细了解了Ins是如何限制图片大小的. 官方帮助说的很清楚,https://help.instagram.com/163182164042672 ...

  7. Jmeter--BeanShell使用

    博客首页:http://www.cnblogs.com/fqfanqi/ (一)BeanShell简介 BeanShell是一个小型嵌入式Java源代码解释器,具有对象脚本语言特性,能够动态地执行标准 ...

  8. HDU 5421 Victor and String(回文树)

    Victor and String Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/262144 K (Java/Othe ...

  9. python中 将字符串和字典的相互转换

    1.首先引入json模块 # 引入json模块 import json 2.转换 #JSON到字典转化: dictinfo = json.loads(json_str) # 输出dict类型 字典到J ...

  10. js处理事件冒泡

    给Dom元素添加事件时,有时候会遇到事件冒泡,处理方法如下: $("#Tab1 .close").live("click", function (event) ...