复制粘贴

【题目描述】
kkk最近才学会输出语句,非常兴奋,就要输出N行“6”来表达她的兴奋。但是一条一条语句打呢又太慢,所以kkk就想到了——复制&粘贴!
当然一开始kkk会先打出一条输出语句,然后她可以选择复制粘贴。每次kkk可以复制1~t条语句(其中t表示当前的输出语句数)并粘贴。那么kkk最少需要复制几次才能写出N行“6”呢?
【输入格式】
有多组数据,每组数据包含一个整数N表示要输出多少行
【输出格式】
对于每组数据输出最少的复制次数
【样例输入】
2
10
【样例输出】
1
4
【数据范围】
1<=N<2^32
【分析】
不难发现,为了追求复制次数最少,应该使每一次复制的行数最大化,也就是每一次粘贴后就全选再复制。
如果输入数据恰好是2的x次方,复制的次数就是x。如果不是,就令x为2^x小于输入数据的最大整数,答案就是x+1。

var
  n,t,ans:qword;
begin
  while not eof do begin
      read(n);
        ans:=0;
        t:=1;
        while t*2<=n do begin
          t:=t*2;
            inc(ans);
        end;
        if t<n then inc(ans);
        writeln(ans);
    end;
end.
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值