A.Phoenix and Balance
CF1348 A
题意:给定
n
n
n次操作,第
i
i
i次可以向
a
/
b
a/b
a/b加上
2
i
2^i
2i,要求
a
、
b
a、b
a、b都被加了
n
2
\frac{n}{2}
2n次。求
∣
a
−
b
∣
|a-b|
∣a−b∣的最小值。
思路:
二进制的一道水题
可以知道对2i而言,他大于
∑
k
=
1
i
−
1
2
i
\sum_{k=1}^{i-1} 2^i
∑k=1i−12i
所以假设
b
b
b是较大的数,只要把
2
n
2^n
2n给
b
b
b,剩下的从最小的依次加到
b
b
b上。余下的都给
a
a
a。
int main(){
int t=ird();
LL n,a,b;
while(t--){
n=lrd();
b=qpow(2,n+1)-2;
a=qpow(2,n);
for(int i=1;i<n/2;i++){
a+=qpow(2,i);
}
b-=a;
a-=b;
cout<<a<<endl;
}
}