L1-4 零头就抹了吧
题目
这是知乎上看到的:前几天去肉店灌香肠,结账一共258元。我说:“都是老顾客了,零头就抹了吧。”老板也很爽快:“行,凑个整,你给256块吧。”我顿时肃然起敬:“您以前当过程序员吧?在哪个公司啊?”老板看了看我,有点不好意思地说:“XX”。
本题就请你写个程序,帮老板计算他怎么抹零头。
输入格式:
输入在一行中给出一个正整数 N(≤10
9
),为客人应该付的钱。
输出格式:
在一行中输出老板抹掉零头后应收的钱。
输入样例:
258
输出样例:
256
样例说明:
256 在二进制中是 100 000 000,被程序员认为是个很“整”的数。所有二进制中最高位是 1 后面全是 0 的数字都是程序员世界里的“整”数。256 是小于 258 的最大的“整”数,所以老板收取这个数。
代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'int T, t, s;signed main() {int n;cin >> n;int pos = 0;for (int i = 0; i < 32; i++) {if ((n >> i) & 1) pos = i;}cout << (1 << pos);return 0;
}