HDU4430 Yukari's Birthday(枚举+二分)
Yukari's Birthday HDU4430
就是枚举+二分:
注意处理怎样判断溢出。。。(因为题目只要10^12)
先前还以为要用到快速幂和等比数列的快速求和(但肯定会超__int64)
而且这样判断会超时的。。。
还有题目中的And it's optional to place at most one candle at the center of the cake. (中间的蜡烛可有可无)
还有观察数据就知道:因为n最大10^12,r最多枚举到40,然后二分k的结果,看是否有符合条件的k存在。
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
const __int64 N=;
__int64 fun1(__int64 k,__int64 r,__int64 n)
{
__int64 s=,t=k;
for(int i=;i<=r;i++)
{
s+=t;
if(s > n)//判断在求和的过程中是否已经比n大(可省时很多且不会超__int64)
return N*N;
t*=k;
}
return s;
}
__int64 fun(__int64 r,__int64 n)
{
if(r == )
return n;
__int64 mid,p,lef=,rig=N;
while(lef <= rig)
{
mid=(lef+rig)/;
p=fun1(mid,r,n);
if(p == n)
return mid;
if(n > p)
lef=mid+;
else
rig=mid-;
}
return -;
}
int main()
{
__int64 n,p,r,rr,rp;
while(scanf("%I64d",&n)!=EOF)
{
rr=N;rp=N;
for(r=;r<=;r++)//只要到40就行了
{
p=fun(r,n);//中间放蜡烛
if(p!=-)
if(r*p < rr*rp || (r*p == rr*rp && r < rr))
{
rr=r;
rp=p;
}
p=fun(r,n-);//中间不放蜡烛
if(p!=-)
if(r*p < rr*rp || (r*p == rr*rp && r < rr))
{
rr=r;
rp=p;
}
}
printf("%I64d %I64d\n",rr,rp);
}
return ;
}
HDU4430 Yukari's Birthday(枚举+二分)的更多相关文章
- zoj 3665 Yukari's Birthday(枚举+二分)
Yukari's Birthday Time Limit: 2 Seconds Memory Limit: 32768 KB Today is Yukari's n-th birthday ...
- hdu 4430 Yukari's Birthday 枚举+二分
注意会超long long 开i次根号方法,te=(ll)pow(n,1.0/i); Yukari's Birthday Time Limit: 12000/6000 MS (Java/Others) ...
- CSU OJ PID=1514: Packs 超大背包问题,折半枚举+二分查找。
1514: Packs Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 61 Solved: 4[Submit][Status][Web Board] ...
- 4 Values whose Sum is 0(枚举+二分)
The SUM problem can be formulated as follows: given four lists A, B, C, D of integer values, compute ...
- hdu4430之枚举+二分
Yukari's Birthday Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- hdu4430 枚举+二分
Yukari's Birthday Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- HDU - 4430 Yukari's Birthday(二分+枚举)
题意:已知有n个蜡烛,过生日在蛋糕上摆蜡烛,将蜡烛围成同心圆,每圈个数为ki,蛋糕中心最多可摆一个蜡烛,求圈数r和看,条件为r*k尽可能小的情况下,r尽可能小. 分析:n最大为1012,k最少为2,假 ...
- Codeforces Round #379 (Div. 2) C. Anton and Making Potions 枚举+二分
C. Anton and Making Potions 题目连接: http://codeforces.com/contest/734/problem/C Description Anton is p ...
- HDU 4282 A very hard mathematic problem --枚举+二分(或不加)
题意:问方程X^Z + Y^Z + XYZ = K (X<Y,Z>1)有多少个正整数解 (K<2^31) 解法:看K不大,而且不难看出 Z<=30, X<=sqrt(K) ...
随机推荐
- AspNetPager分页控件使用方法
一.下载AspNetPager.dll 二.AspNetPager.dll复制于应用程序下的bin目录,打开解决方案,引用dll文件 三. 在工具栏中添加控件,这样可以支持拖拽使用 四. 要使用Asp ...
- js自定义对象
一,概述 在Java语言中,我们可以定义自己的类,并根据这些类创建对象来使用,在Javascript中,我们也可以定义自己的类,例如定义User类.Hashtable类等等. 目前在Javascrip ...
- android studio serialversionuid设置
- 半小时快速了解redis,基于ubuntu 12.04 + redis 2.8.9
一.什么是redis ? 其官方介绍是: Redis is what is called a key-value store, often referred to as a NoSQL databas ...
- Cad 二次开发关于SelectCrossingPolygon和SelectFence返回结果Status为error的小测试
CAD2008的二次开发,有个很奇怪的现象,只要你选择的点集不在当前视图上SelectCrossingPolygon和SelectFence返回结果Status就会为error,所以要获取正确的结果, ...
- 遇到IIS7配置PHP出现403和404错误的解决办法
服务器要配置PHP,总是出现403错误.服务器是新装的,操作系统是windows server 2008 R2,装的IIS7. IIS里PHP和本地服务器对比了好几遍,都没到出错的原因,后来通过cmd ...
- Struts 2学习笔记——拦截器相关
一.添加国际化支持 默认的struts-deault.xml文件中已经定义了国际化拦截器,内容如下 <!-定义国际化拦截器--> <interceptor name="i1 ...
- [MOSEK] Stupid things when using mosek
1.2016-8-14 我希望把一个qp问题的代码从conic constraints改为无外加约束,仅适用variable bounds的线性不等式约束 于是原来的约束代码为 if (r == MS ...
- 用muduo实现memcached协议的例子
最近花了两天时间用 muduo 部分实现了 memcached 服务器协议,代码位于 examples/memcached/server,能通过 memcached 的大部分测试用例(incr/dec ...
- XAF学习笔记1
写软件很多年了.看过的框架用过的框架非常多.一直想要一种框架,说不出的心烦重复的数据库设计,重复的Model生成,重复的界面设计 一直寻寻觅觅,终于找到一个框架,DEV的XAF,DEV控件用了N年了, ...