正题
题目大意
第iii个武将价值为3i−13^{i-1}3i−1,求第kkk大的选择武将价值之和
解题思路
因为∑i=0n−13i<3n\sum_{i=0}^{n-1}3^i<3^{n}∑i=0n−13i<3n
所以其实答案就是kkk转成二进制之后强行转成3进制的值。
codecodecode
#include<cstdio>
#include<cmath>
#define ll long long
using namespace std;
ll n,k,z,ans,w;
int main()
{//freopen("recruitment.in","r",stdin);//freopen("recruitment.out","w",stdout);scanf("%lld",&n);while(n--){scanf("%lld",&k);z=1;ans=0;w=0;while(k){if(z*2>k){k-=z;ans+=pow(3,w);z=1;w=0;}else z*=2,w++;}printf("%lld\n",ans);}
}