CF1362C 题解
CF1362C 题目传送门。
input:7
对于最右面一位,每一个数会和相邻的两个数产生差异(但不包括 和 ),共 组。
对于倒数第二位,每 个数就会产生一组差异(去重后),共有 组。
对于倒数第三位,每 个数会产生一对差异,共 组。、
对于倒数第 位,每 个数会产生一对差异。
继续验证 ,发现可以沿用上面的方式。
依此,我们推论 。
然后写出代码。
#include<bits/stdc++.h>
using namespace std;
int main(){
long long t,b;
cin>>t;
while(t--){
cin>>b;
long long i=1,ans=0;
long long q=b;
while(q){
q/=2;
ans+=b/i;
i*=2;
}
cout<<ans<<endl;
}
return 0;
}

浙公网安备 33010602011771号