4/13 cf构造题
Posted 钟钟终
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4/13 cf构造题相关的知识,希望对你有一定的参考价值。
C. Factorials and Powers of Two
难度:1500
暴力枚举二进制的方法。任何一个数都可以由二进制表示出来,暴力枚举出需要最少的阶乘和二进制数。
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+5;
const int inf=0x3f3f3f3f;
int a[N],n,k,idx;
int get(int n)
int ans=0;
while(n)
if(n&1) ans++;
n>>=1;
return ans;
void init()
a[idx++]=1;
for(int i=1;i<=15;i++)
a[idx++]=i*a[i-1];;
signed main()
init();
int t;cin>>t;
while(t--)
cin>>n;
k=inf;
for(int i=0;i<(1<<15);i++)
int m=n,cnt=0;
for(int j=0;j<15;j++)
if((i>>j)&1)
m-=a[j];cnt++;
if(m>=0)
k=min(k,cnt+get(m));
cout<<k<<endl;
return 0;
以上是关于4/13 cf构造题的主要内容,如果未能解决你的问题,请参考以下文章
构造题 贪心cf1041E. Tree Reconstruction