题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4430

题意:要在一个蛋糕上放置n个糖果,摆成r个同心圆,每个同心圆的糖果数为k^i,中间圆心可以放一个糖果或者不放,使得r*k最小,若有多个答案输出r最小的那个。

18<=n<=10^12,k>=2,1<=i<=r

分析:r最多也就40,而k最多100000,枚举r,然后二分找出k就行了,二分的时候sum可能会溢出,所以判断是否大于n跳出就行了,其实不难的,但是由于我的疏忽看错题意了,没注意到中心可放或可不放,导致wa到死,练习的时候坑队友坑到结束,应该认真看看题目的,哎~~~~

AC代码:

 1 #include<stdio.h>
 2 #define LL long long
 3 #define INF 0x7fffffff
 4 LL binary(int r,LL n)
 5 {
 6     int i;
 7     LL low=2,high=1000000,mid,s,sum;
 8     while(low<=high)
 9     {
10         mid=(low+high)>>1;
11         s=1,sum=1;
12         for(i=1;i<=r;i++)
13         {
14             s*=mid;
15             sum+=s;
16             if(sum>n)
17                 break;
18         }
19         if(sum==n)
20             return mid;
21         else if(sum>n)
22             high=mid-1;
23         else
24             low=mid+1;
25     }
26     return -1;
27 }
28 int main()
29 {
30     int r,i;
31     LL n,k,tmp,Min;
32     while(scanf("%lld",&n)!=EOF)
33     {
34         Min=INF;
35         r=1,k=n-1;
36         for(i=1;i<64;i++)
37         {
38             tmp=binary(i,n);
39             if(tmp!=-1)
40             {
41                 if(tmp*i<Min)
42                 {
43                     Min=tmp*i;
44                     r=i,k=tmp;
45                 }
46             }
47             tmp=binary(i,n+1);
48             if(tmp!=-1)
49             {
50                 if(tmp*i<Min)
51                 {
52                     Min=tmp*i;
53                     r=i,k=tmp;
54                 }
55             }
56         }
57         printf("%d %lld\n",r,k);
58     }
59     return 0;
60 }

View Code

转载于:https://www.cnblogs.com/frog112111/p/3405659.html

hdu 4430 Yukari's Birthday(二分)相关推荐

  1. hdu 4430 Yukari's Birthday (简单数学 + 二分)

    Problem - 4430 题意是,给出蜡烛的数量,要求求出r和k,r是蜡烛的层数,k是每一层蜡烛数目的底数. 开始的时候,没有看清题目,其实中间的那根蜡烛是可放可不放的.假设放置中间的那根蜡烛,就 ...

  2. HDU 4430 amp; ZOJ 3665 Yukari#39;s Birthday(二分法+枚举)

    主题链接: HDU:http://acm.hdu.edu.cn/showproblem.php?pid=4430 ZJU:http://acm.zju.edu.cn/onlinejudge/showP ...

  3. HDU - 6070 Dirt Ratio (二分 + 线段树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6070 题目大意:给定一个序列a,对于任何一个区间 [l,r],它的"Dirt Ratio&q ...

  4. hdu 2295 Radar 重复覆盖+二分

    题目链接 给m个雷达, n个城市, 以及每个城市的坐标, m个雷达里只能使用k个, 在k个雷达包围所有城市的前提下, 求最小半径. 先求出每个雷达到所有城市的距离, 然后二分半径, 如果距离小于二分的 ...

  5. hdu 3622 Bomb Game【二分+2-SAT+tarjan】

    用read()会挂 二分半径,显然最优的是所有原都用这个最小半径,然后2-SAT把相交的圆建图,跑tarjan判一下可行性即可 #include<iostream> #include< ...

  6. hdu 1150 Machine Schedule (经典二分匹配)

    //A组n人 B组m人 //最多有多少人匹配 每人仅仅有匹配一次 # include<stdio.h> # include<string.h> # include<alg ...

  7. hdu 5179(bfs打表+二分)

    beautiful number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  8. HDU Problem - 6383 p1m2(二分)

    题目链接 Problem Description 度度熊很喜欢数组!!我们称一个整数数组为稳定的,若且唯若其同时符合以下两个条件:1. 数组里面的元素都是非负整数.2. 数组里面最大的元素跟最小的元素 ...

  9. HDU Problem - 1969 Pie(二分,精度)

    题目链接 Problem Description My birthday is coming up and traditionally I'm serving pie. Not just one pi ...

最新文章

  1. 测试笔试题之相关概念
  2. 没学过编程可以自学python吗-我以前从没学过编程,学Python看什么书?
  3. sql删除过程的命令是什么_一个删除表字段的自动化执行工单的思考
  4. 全球海拔最高的国际级数据中心竣工,西藏有了大数据存储中心
  5. 如何让进口商品拥有正品“身份证”?解析区块链技术的应用
  6. 数据库连接池的选择及其开发配置
  7. python webbrowser点击_用 Python 实现手机自动答题,这下百万答题游戏谁也玩不过我!...
  8. python 模块和包
  9. xp系统的WINS服务器设置,WindowsXP系统设置
  10. go语言一个包含nil指针的接口不是nil接口的理解
  11. 【Spark笔记】Windows10 本地搭建单机版Spark开发环境
  12. 自学网c语言教学视频教程下载,C语言从入门到精通教程 高清不加密 黄老师 视频教程 教学视频 百度网盘下载...
  13. 前端快速上手APICloud App开发
  14. 阿里云对象存储OSS服务——上传/删除/获取图片
  15. 致远OA自定义函数--正则表达式匹配校验
  16. springboot启动原理及其流程
  17. 防Ddos文献之应对篇-DDoS防御方案
  18. 双臂冗余机器人solidworks转URDF
  19. 智能优化算法——粒子群算法原理(附代码)
  20. 快速调出multisim里单刀双置开关

热门文章

  1. Flutter中嵌入Android 原生TextView
  2. AsyncTask异步加载的源码分析与实现实例
  3. Mr.J--JavaScript-恶搞小代码
  4. (十四)面向对象之多态
  5. UVA - 753 A Plug for UNIX(网络流)
  6. java实现定时任务 Schedule
  7. PHP扩展调用C++静态库
  8. 统计学习方法六:支持向量机三(支持向量定量理解和算法总结)
  9. eclipce 快捷键
  10. Codeforces Round #280 (Div. 2)