二分答案的应用
2011-08-12 12:05
239 查看
题目要求:
找一个数字x,使得x^x 的位数大于等于n,(x-1)^(x-1)的位数小于n
program sky;
var
n:qword;
function doing(l,r:qword):qword;
var
mid,temp1,temp2:qword;
begin
if l=r then exit(l);
mid:=(l+r+1)>>1;
temp1:=trunc(mid*(ln(mid)/ln(10)))+1;{计算位数}
temp2:=trunc((mid-1)*(ln(mid-1)/ln(10)))+1;{计算x-1的位数}
if (temp1>=n) and (temp2<n) then exit(mid);{分情况二分}
if temp1<n then exit(doing(mid,r));
if temp2>n then exit(doing(l,mid-1));{减一下mid,不重不漏}
end;
begin
assign(input,'number.in');reset(input);
assign(output,'number.out');rewrite(output);
read(n);
write(doing(0,n+100));{从0开始,避免遗漏}
close(input);close(output);
end.
找一个数字x,使得x^x 的位数大于等于n,(x-1)^(x-1)的位数小于n
program sky;
var
n:qword;
function doing(l,r:qword):qword;
var
mid,temp1,temp2:qword;
begin
if l=r then exit(l);
mid:=(l+r+1)>>1;
temp1:=trunc(mid*(ln(mid)/ln(10)))+1;{计算位数}
temp2:=trunc((mid-1)*(ln(mid-1)/ln(10)))+1;{计算x-1的位数}
if (temp1>=n) and (temp2<n) then exit(mid);{分情况二分}
if temp1<n then exit(doing(mid,r));
if temp2>n then exit(doing(l,mid-1));{减一下mid,不重不漏}
end;
begin
assign(input,'number.in');reset(input);
assign(output,'number.out');rewrite(output);
read(n);
write(doing(0,n+100));{从0开始,避免遗漏}
close(input);close(output);
end.
相关文章推荐
- 二分答案:Poweroj2461-入门基础之二分答案(二分法的应用)
- hihocoder hiho第38周: 二分·二分答案 (二分搜索算法应用:二分搜索值+bfs判断可行性 )
- 浅谈二分答案的原理和相关应用
- [ctsc2018] 混合果汁 【可持久化线段树】【二分答案】
- 【HNOI2007】紧急疏散EVACUATE BFS+二分答案+最大流
- B. Pipeline----二分答案
- luogu1083【2012提高】借教室(二分答案+差分前缀和)
- 二分查找的应用
- 二分答案
- CodeVS1183 泥泞的道路 题解 【二分答案】【SPFA】
- POJ 3261 Milk Patterns(后缀数组+二分答案)
- 【bzoj 入门OJ】[NOIP 热身赛]Problem B: escape(二分答案+bfs)
- BZOJ 2653 middle 二分答案+可持久化线段树
- [BZOJ1196]HNOI2006公路修建问题|Kruskal|贪心|二分答案
- Vijos1450 包裹快递[二分答案]
- SDUT 2778 小明的花费预算 (二分答案) -- 解题报告
- Codeforces Round #310 (Div. 1) D. Case of a Top Secret 二分 stl应用
- 3258 River Hopscotch 二分答案
- bzoj 3613: [Heoi2014]南园满地堆轻絮 二分答案+贪心
- BZOJ 1822 计算几何+网络流+二分答案 解题报告