atcoder ABC153

本次由于个人原因只做了大概一个小时。只写了A到D题,大概记录一下相关收获。
A题目就不写了,记录一个。1.对于A?B:C这一三目操作符,如果要写在cout输出中一定要在外面加一个(),否则会出错。如cout<<(a>1?

a:a+1)<

B,C题没啥写的
知道D题,一向是我的困难的数论题目,这次由于题目简单我终于过了,但还是出现了问题。atcoder ABC153_第1张图片
细细一想,其实这道题主要时二进制上的一个规律而已。2的答案是3,3的答案也是3,4的答案是7,而5,6,7的答案都是7,那么这道题就基本上解决了。我们只需找到小于等于输入值的最小的2的某次方。
举个栗子:求2的整数次方且小于19的最小值。很简单我们知道答案是16。如果用代码展现我们可以从小到大遍历,但如何控制循环条呢?

在此,我们直接当遍历到比这个数大时推出循环。我们假定用a表示次方的大小,那么无论是刚好等于或是小于的情况,答案均可用a-1次方

来表示。
注意这道题对于1的特判。
大概到这就OK了。

你可能感兴趣的:(atcoder)