博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷——P3152 正整数序列
阅读量:6826 次
发布时间:2019-06-26

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

P3152 正整数序列

题目描述

kkk制造了一个序列,这个序列里的数全是由正整数构成的。你别认为她的数列很神奇——其实就是1, 2, …, n而已。当然,n是给定的。kkk的同学lzn认为0是一个好数字(看上去很饱满有木有),所以他机智的趁kkk不在把这个序列全变成了0(其实只是准备窝)~

可是kkk突然回来了!于是lzn的计划破灭了。但是他并不甘心,就和kkk说:我可以每次从这个序列中选取一些数,然后一起减去一个相同的数(当然也是正整数)。然后经过有(wu)限(qiong)次这样的操作后,这个序列就可以全变成0。

kkk当然不信咯,于是lzn就求出了他最少要做几次这样的操作,才能使这个序列全部变成0。

输入输出格式

输入格式:

 

一个正整数n

 

输出格式:

 

最少操作次数

如果无解输出-1

 

输入输出样例

输入样例#1:
 
2
输出样例#1:
 
2

说明

1<=n<=10^9

 

 

找规律,我们可以发现   1  2~3  4~7  8~15  16~31

  依次对应的数为  1  2     3    4    5

可以看到上面的数对应的为2的n次方内得数,因此我们的结果将会是log n+1(下取整)

#include
#include
#include
#include
using namespace std;int n,ans;int read(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){
if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f;}int main(){ n=read(); while(n) { n>>=1; ans++; } printf("%d",ans); return 0;}

 

转载于:https://www.cnblogs.com/z360/p/7894495.html

你可能感兴趣的文章
JQuery实现简单的服务器轮询效果
查看>>
2017.6.26 工作记录
查看>>
“Too many open files” 小记
查看>>
《Effective C#》读书笔记——条目4:使用Conditional特性而不是#if条件编译<C#语言习惯>...
查看>>
浅谈异常与恋爱
查看>>
分享:http-watcher更新,改进对动态web程序的支持
查看>>
设计模式---->经典设计模式一览
查看>>
Asp.Net生命周期系列一
查看>>
Spark源码分析 – Deploy
查看>>
C#反射技术概念作用和要点
查看>>
翻译器DIY————次序
查看>>
easyui form 提交问题,纠结了很久,有点诡异
查看>>
Swift - 图像控件(UIImageView)的用法
查看>>
Cloneable接口和Object的clone()方法
查看>>
[saiku] 连接 mondrain 数据源出错-空指针错误
查看>>
人大、上财、复旦、上交四校2013年应届金融硕士就业去向
查看>>
技能UP:SAP OBYC自动记账的实例说明(含value String应用说明)
查看>>
[转]【HTTP】Fiddler(二) - 使用Fiddler做抓包分析
查看>>
Cts框架解析(8)-IBuildProvider
查看>>
asp.net mvc 之旅—— 第三站 路由模板中强大的自定义IRouteConstraint约束
查看>>