八月月赛
P6745 Number
![]()
![image-20200808202427388]()
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll k,x,a[555];
int main()
{
scanf("%lld %lld",&k,&x);
a[k+1]+=1;
while(x)
{
a[++a[0]]+=x%10;
x/=10;
if(a[a[0]]>=10) a[a[0]]%=10,a[a[0]+1]+=1;
}
if(a[a[0]+1]) a[0]++;
a[0]=max(a[0],k+1);
for(int i=a[0];i;i--) cout<<a[i];
}
P6746 Operations
![image-20200808202526193]()
![image-20200808202546061]()
![image-20200808202602021]()
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll a,b,c,d;
int main()
{
cin>>a>>b>>c>>d;
if(a==0&&b==0) cout<<0;
else if(a==0||b==0) cout<<d;
else if(a==b) cout<<min(c,d*2);
else cout<<min(c+d,d*2);
}
P6747 Teleport
![image-20200808202713951]()
![image-20200808202727325]()
![image-20200808202801731]()
![image-20200808202820425]()
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=70;
const ll P=pow(2,50);
ll n,a,q,K,jz,S,cnt[N][2];
int main()
{
scanf("%lld",&n);
while(n--)
{
scanf("%lld",&a);
for(int i=0;i<=50;++i) cnt[i][a>>i&1]++;
}
jz=1;
for(int i=0;i<=50;++i,jz<<=1)
if(cnt[i][0]<=cnt[i][1]) K+=jz,S+=jz*cnt[i][0];
else S+=jz*cnt[i][1];
scanf("%lld",&q);
while(q--)
{
scanf("%lld",&a);
if(a<S)
{
printf("-1\n");
continue;
}
ll ans=K,sum=S;
jz=P;
for(int i=50;i>=0;--i,jz>>=1)
{
ll val=sum+jz*(cnt[i][0]-cnt[i][1]);
if(!(ans>>i&1)&&val>0&&val<=a) ans+=jz,sum=val;
}
printf("%lld\n",ans);
}
}