1093:程序员的段子
描述
听到两个程序员聊天——A:“借我1000块。”B:“拿去,1024块,我给你凑了个整儿。”
这题跟这件事有关,假定A向B借钱,B宁可多借点钱好凑成2的整数次幂。
输入
一个正整数n,表示有n组案例。
每组案例由一个正整数m构成,表示A原先想向B借钱的数量。(m<=10亿)
输出
针对每组案例,输出B实际会借给A的数量。
每组案例输出完都要换行。
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
long long int m;
cin >> m;
for (int j = 0; j <= 30; j++)
{
if (m <= pow(2, j))
{
cout << int(pow(2, j));
break;
}
}
cout << endl;
}
return 0;
}
总结
这里最容易忽视的问题就是精度问题…算法其实很好想到,无非就是用了个break的强制结束循环,让它能输出第一个比输入大的2的整数次冥并让它只输出一个…总体还行…