目录
链接
题目
4721 兰姐姐的愤怒
时间限制: 1.000 Sec 内存限制: 128 MB
题目描述
兰姐姐是来自火星的女王。
由于兰姐姐实在太漂亮了,所以有许多仰慕她的人前来追求她。兰姐姐会给这个追求者一个考验:兰姐姐会打追求者许多巴掌,追求者有一个防御值x,当兰姐姐的攻击力a大于x时他就会被打到火星去,一开始兰姐姐的攻击力为1,每次追求者当下攻击后,兰姐姐的攻击力就会翻倍,现在问:如果知道了追求者的防御值x,求兰姐姐把他打到火星去时,兰姐姐的攻击力为几?
输入
只有一行,一个非负整数x,追求者的防御值
输出
只有一行,一个非负整数x,追求者的防御值
样例
输入1
5
输出1
8
提示
【数据范围】
数据保证1≤x≤2^31
解析
题目中已经提到两个数据(a=1,x)那么我们肯定就要定义它们了
一看2^31次方就是int的上限嘛,所以就直接
int a=1,x;
然后你写完其他代码提交,会发现下面
因为数据在循环中会翻倍,可能会超过int的范围,就要超长时间,题目最多1s
所以怎么办? 当然是换数据类型了!既然int不够 long long 走起
所以:
long long int a=1,x;
然后下面就简单多了
输入x→写循环→输出,结束
代码
#include <iostream>
using namespace std;
int main()
{
long long a=1,x;
cin >> x;
while (a<=x)
{
if (a>x) break;
a*=2;
}
cout << a;
return 0;
}
科普
TLE(Time Limit Exceeded) 时间超限
运行超出时间限制,一般遇到该错误都会有循环结构,检查是否有死循环,或有更好的计算方法