博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二分搜索 UVALive 6076 Yukari's Birthday (12长春K)
阅读量:6038 次
发布时间:2019-06-20

本文共 1684 字,大约阅读时间需要 5 分钟。

 

题意:问使得sum (k^i) = n || n -1 (1 <= i <= r) 的min (r*k)组合的r和k 

分析:r的最大不会超过40,枚举r,二分搜索k。注意会爆long long,所以上界需要优化。r = 2开始上界就小于1e6,cyd将后面的范围也求出来了,其实1e6就够用了。

这水题卡了我好久,没有很好分析题目,做不出来就有种无力感,开始烦躁起来。还是题目做得少了,如果这种题做多了,可能看一眼就能做出来了。

 

/************************************************* Author        :Running_Time* Created Time  :2010-1-16 12:18:59* File Name     :K.cpp ************************************************/#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define lson l, mid, rt << 1#define rson mid + 1, r, rt << 1 | 1typedef long long ll;const int N = 1e5 + 10;const int INF = 0x3f3f3f3f;const int MOD = 1e9 + 7;const double EPS = 1e-10;const double PI = acos (-1.0);ll n, r, k;ll cal(ll x, int y) { ll ret = 0, p = x; for (int i=1; i<=y; ++i) { ret = ret + p; p *= x; if (ret > (ll)1e12) return ret; } return ret;}ll bsearch(ll l, ll r, int m, ll ans) { while (l <= r) { ll mid = (l + r) >> 1; ll sum = cal (mid, m); if (sum == ans) return mid; else if (sum < ans) l = mid + 1; else r = mid - 1; } return 0;}int main(void) { while (scanf ("%lld", &n) == 1) { r = 1; k = n - 1; ll kk; for (int i=2; i<=40; ++i) { kk = bsearch (2, 1e6, i, n); if (kk == 0) continue; if (1ll * i * kk < r * k) { r = i; k = kk; } } for (int i=2; i<=40; ++i) { kk = bsearch (2, 1e6, i, n - 1); if (kk == 0) continue; if (1ll * i * kk < r * k) { r = i; k = kk; } } printf ("%lld %lld\n", r, k); } return 0;}

  

转载于:https://www.cnblogs.com/Running-Time/p/4918343.html

你可能感兴趣的文章
特殊样式:ime-mode禁汉字,tabindex焦点
查看>>
linux
查看>>
Layout父元素点击不到的解决办法
查看>>
【面试次体验】堆糖前端开发实习生
查看>>
基于apache实现负载均衡调度请求至后端tomcat服务器集群的实现
查看>>
C#+QQEmail自动发送邮件
查看>>
[Hadoop]MapReduce多输出
查看>>
Android Activity详解(一)
查看>>
快准车服完成3000万元A+轮融资,年底将开始B轮融资
查看>>
让我去健身的不是漂亮小姐姐,居然是贝叶斯统计!
查看>>
MySQL 数据约束
查看>>
我的友情链接
查看>>
SERVLET容器简介与JSP的关系
查看>>
《服务器SSH Public Key认证指南》-补充
查看>>
我的友情链接
查看>>
Java break continue return 的区别
查看>>
算法(Algorithms)第4版 练习 1.3.4
查看>>
jquery easyUI checkbox复选项获取并传后台
查看>>
浅析NopCommerce的多语言方案
查看>>
设计模式之简单工厂模式
查看>>