codeforces div 3 748
A. Elections
大意:
给a,b,c 三个数,分别求出每个数增加多少才能成为最大的数;
题目链接
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
int main()
{
int t;
long long a[4],max=-1;
cin>>t;
while(t--){
int j=0;
for(int i=1;i<=3;++i){
scanf("%lld",&a[i]);
if(a[i]>max) max=a[i];
}
for(int i=1;i<=3;++i){
if(a[i]==max) ++j;
}
{
for (int i = 1; i <= 3; ++i)
{
if(j==1){
if(a[i]==max) printf("0 ");
else printf("%lld ", max - a[i] + 1);
}
else{
if(a[i]==max) printf("1 ");
else printf("%lld ", max - a[i] + 1);
}
}
printf("\n");
max = -1;
}
}
// system("pause");
}
B. Make it Divisible by 25
大意:
给一个数,这个数中需要移除多少个数字才能使被改变后的数字被25整除,输入保证一定有解.
#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
int main()
{
int t;
string a;
cin>>t;
while(t--)
{
cin>>a;
int b=0,c=0;
int judg=0;
for(int i=a.length()-1;i>=0;--i)
{
++b;
if(!judg&&a[i]=='0'){
judg=1;
}
else if(judg&&(a[i]=='5'||a[i]=='0'))
{
b=b-2;
break;
}
}
judg=0;
for(int i=a.length()-1;i>=0;--i)
{
++c;
if(!judg&&a[i]=='5'){
judg=1;
}
else if(judg&&(a[i]=='2'||a[i]=='7'))
{
c=c-2;
break;
}
}
int ans=min(b,c);
printf("%d\n",ans);
}
}
C. Save More Mice
大意:
在一个一维的数轴上,猫位于0,共有k只老鼠位于1至n之间,n为老鼠洞的位置,
猫和老鼠移动的速度相同(猫在追老鼠,且猫和老鼠位于同一位置时猫吃掉老鼠),求最多有多少只老鼠进入老鼠洞在猫追到老鼠之前.
#include<stdio.h>
#include<iostream>
#include<algorithm>
typedef long long ll;
using namespace std;
int main()
{
//fasfas
//fsadfggd
int t,k,x;
ll n;
int a[int(4e5+10)];
cin>>t;
while(t--)
{ int dis=0,ans=0;
scanf("%lld %d",&n,&k);
for(int i=1;i<=k;++i)
{
scanf("%d",&x);
a[i]=n-x;
}
sort(a+1,a+k+1);
for(int i=1;i<=k;++i)
{
dis+=a[i];
++ans;
//fasfas
if(dis>=n)
{
ans--;
break;
}
}
printf("%d\n",ans);
}
}