Codeforces Round #638 A.Phoenix and Balance(水题)
作者:互联网
Phoenix has nn coins with weights 21,22,…,2n21,22,…,2n. He knows that nn is even.
He wants to split the coins into two piles such that each pile has exactly n2n2 coins and the difference of weights between the two piles is minimized. Formally, let aa denote the sum of weights in the first pile, and bb denote the sum of weights in the second pile. Help Phoenix minimize |a−b||a−b|, the absolute value of a−ba−b.
InputThe input consists of multiple test cases. The first line contains an integer tt (1≤t≤1001≤t≤100) — the number of test cases.
The first line of each test case contains an integer nn (2≤n≤302≤n≤30; nn is even) — the number of coins that Phoenix has.
OutputFor each test case, output one integer — the minimum possible difference of weights between the two piles.
Example Input Copy2 2 4Output Copy
2 6
因为两组的size都是n/2,所以最大的放进一组后,这组剩下的n/2-1个数一定都得是最小的(等比数列性质可知,an>sigma ai(i= 1 to n-1))。
#include <bits/stdc++.h> using namespace std; long long fpow(long long a,long long b) { long long ans=1; for(;b;b>>=1) { if(b&1)ans*=a; a*=a; } return ans; } int main() { int t; cin>>t; while(t--) { long long n,sum1=0,sum2=0; cin>>n; sum1+=fpow(2,n); sum1+=fpow(2,n/2)-2; sum2=fpow(2,n+1)-2-sum1; cout<<abs(sum1-sum2)<<endl; } return 0; }
标签:Phoenix,水题,638,coins,sum1,fpow,weights,long 来源: https://www.cnblogs.com/lipoicyclic/p/12818074.html