A:纯白送
#include<stdio.h>
int main()
{
int t;
int x,y,n,k,temp;
scanf("%d",&t);
while(t--)
{
scanf("%d %d %d",&x,&y,&n);
temp=n-n%x;
temp=temp+y;
if(temp>n)
k=temp-x;
else
k=temp;
printf("%d\n",k);
}
return 0;
} B:纯白送
include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int t,add1,add2,k;
cin>>t;
while(t--)
{
cin>>k;
add1=0;add2=0;
while(k%2==0)
{
add1++;
k=k/2;
}
while(k%3==0)
{
add2++;
k=k/3;
}
if(k!=1||add2<add1)
{
printf("-1\n");
continue;
}
printf("%d\n",add2*2-add1);
}
return 0;
}C:纯白送。这题以前做过类似的,问你一个括号序列合法不合法,是那道题的略微加强版本。
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int t,k,s,p1,p2;
cin>>t;
char c;
while(t--)
{
s=0,p1=0,p2=0;
cin>>k;
c=getchar();
while(k--)
{
c=getchar();
if(c=='(')
p1++;
if(c==')')
p2++;
if(p2>p1)
{
s++;
p2--;
}
}
cout<<s<<endl;
}
return 0;
}D:给(k-n%k)%k排个序即可,注意到要用long long。
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
long long t;
cin>>t;
long long p[200000],q[200000],add,n,k;
long long t1=0,t2=0,tn;
while(t--)
{
cin>>n>>k;
t1=0;t2=0;
for(add=0;add<n;add++)
{
cin>>p[add];
q[add]=k-p[add]%k;
if(q[add]==k)
q[add]=0;
}
sort(q,q+n);
tn=0;
for(add=1;add<n;add++)
{
if(q[add]==q[add-1])
tn++;
else
{
if(tn>=t1&&q[add-1]!=0)
{
t1=tn;
t2=q[add-1];
}
tn=0;
}
//printf("?%lld %lld %lld %lld?\n",add,tn,t1,t2);
}
if(tn>=t1&&q[add-1]!=0)
{
t1=tn;
t2=q[add-1];
}
if(t2==0)
printf("%lld\n",t1*k+t2);
else
printf("%lld\n",t1*k+t2+1);
/*for(add=0;add<n;add++)
{
printf("[%lld]",q[add]);
}
printf("{%lld %lld}\n\n",t1,t2);*/
}
return 0;
}E:把所有只有alice喜欢的和bob喜欢的书分别排序,然后从最小的开始各挑一本加起来当做一本书,放进两个人都喜欢的的书的数组里,最后对都喜欢的书的数组排序即可。
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
long long p[200000],q[200000],r[200000];
int main()
{
long long add,n,k,a=0,b=0,c=0,a1,b1,c1,sum=0;
cin>>n>>k;
for(add=0;add<n;add++)
{
cin>>a1>>b1>>c1;
if(b1&&c1)
{
p[a]=a1;
a++;
}
else if(b1)
{
q[b]=a1;
b++;
}
else if(c1)
{
r[c]=a1;
c++;
}
}
if(a+b<k||a+c<k)
{
printf("-1\n");
return 0;
}
sort(q,q+b);
sort(r,r+c);
if(b<c)
{
for(add=a;add<a+b;add++)
{
p[add]=q[add-a]+r[add-a];
}
n=a+b;
}
else
{
for(add=a;add<a+c;add++)
{
p[add]=q[add-a]+r[add-a];
}
n=a+c;
}
/*printf("|");
for(add=0;add<n;add++)
printf("%lld ",p[add]);
printf("|");*/
sort(p,p+n);
/*printf("|");
for(add=0;add<n;add++)
printf("%lld ",p[add]);
printf("|");*/
for(add=0;add<k;add++)
{
sum+=p[add];
}
printf("%lld",sum);
return 0;
}sort函数是真的方便。

京公网安备 11010502036488号