Vs Brandy

Vs Brandy

测试数据来自 system/1640

背景

X年Y月Z日,工藤新一住所。

“铃......铃......”“您好,我是工藤新一,现在不在家,有事请留言。”
“工藤新一。哈哈......哈哈哈哈......”
阴冷的笑声盘旋在新一的房间里,许久才安静下来。

“组织已经发现了你,没想到吧......”
疯狂的声音慢慢低了下来,夹杂着一丝无奈和悲哀:
“组织已经决定从毛利兰下手了...我的代号是Brandy,看在Sherry的份上我告诉你这些。......以你现在的状况,是没法与组织对抗的。如果想拿到APTX4869的解药,就在明天正午给我来东京都米花町2丁目21番地,我在地下1层等你。”
“嘟——嘟——”一切重新归于安静。

描述

不可饶恕!柯南发现自己的家,也就是Vijos大楼,竟然为黑衣组织所占据!于是他按约来到了东京都米花町2丁目21番地vijos大楼地下1层,在那里,他看到了Brandy,也就是mike_nzk。mike_nzk拿着APTX4869解药的配方,眼神复杂地看着这个组织追杀了许久的少年。当然,APTX4869的解药不是白给的,mike_nzk有一道难题来考验江户川。

众所周知,线段树的建树过程是这样的递归过程:
procedure build(l,r,p:longint);
var m:longint;
begin
tree[p].l:=l;
tree[p].r:=r;
{其他初始化语句}
if l<r then begin
m:=(l+r) shr 1;
build(l,m,p*2);
build(m+1,r,p*2+1);
end;
end;
其中,线段树所在数组这样定义:
var tree:array[1..max] of record
l,r:longint;
{其他维护变量}
end;
主程序中这样调用:build(1,n,1);
(由于本人是学Pascal的,这边全是用Pascal写的,学C++的人多多包涵一下)
现在,mike_nzk要问柯南:给你一个n,求最小的max,使得线段树存在数组里不越界。

第一个问题:当n=7时,max=?
mike_nzk话音刚落,柯南就算出来max=13。

第二个问题:当n=10^1000时,max=?
这下柯南傻眼了:这么大!!!等到世界末日到来人类可能还造不出内存这么大的机器!!!
于是,柯南特地请教你(假设有一台内存足够的机器)。

格式

输入格式

只有一行,即n。

输出格式

只有一行,即最小的max。

样例1

样例输入1

7

样例输出1

13

限制

1s

提示

[题目提示]
太水了,我都懒得提示了!!!
[数据规模]
对于50%的数据,N<=10^7
对于100%的数据,1<=N<=10^1000

来源

mike_nzk,Brandy(白兰地)

信息

ID
1048
难度
(无)
分类
高精度 | 其他 | 数学 点击显示
标签
递交数
0
已通过
0
通过率
?
上传者