题目:
奶牛露丝和博博参加猜谜游戏,猜谜采取抢答的方式,谁先答对的就得分。
猜谜分成A、B、C三轮。在A轮有1至9道题目,每道题目100分,谁先答对的得100分,如果答错了,本题可能没人得分。在B轮有1至9道题目,每道题目200分,谁先答对的得200分,如果答错了,本题可能没人得分。在C轮有1至9道题目,每道题目500分,谁先答对的得500分,如果答错了,本题可能没人得分。在A轮与B轮之间,增加了1道奖励题,分值500分,本题的分数一定会奖励给露丝和博博的其中一人,不可能两人都不奖励。在B轮与C轮之间,增加了1道奖励题,分值1000分,本题的分数一定会奖励给露丝和博博的其中一人,不可能两人都不奖励。当所有的游戏全部结束后,出现这样的局面: 露丝总共得到X分,博博总共得到Y分。
这样的局面有可能出现吗?如果不可能输出-1;如果可能,输出露丝最多答对了多少题。
#include<bits/stdc++.h>
using namespace std;
int T,n,m,t;
int a[5];
bool p;
void sss()
{
for (int i=0;i<=9;i++)
for (int j=0;j<=9;j++)
for (int k=0;k<=9;k++)
if (i*500+j*200+k*100==m)
{
a[1]-=k;
a[2]-=j;
a[3]-=i;
return;
}
}
void ss()
{
for (int i=0;i<=a[1];i++)
for (int j=0;j<=a[2];j++)
for (int k=0;k<=a[3];k++)
if (i*500+j*200+k*100==n)
{
t+=i+j+k;
p=true;
return;
}
}
int main()
{
cin>>T;
for (int i1=1;i1<=T;i1++)
{
cin>>n>>m;
t=0,p=false;
a[1]=a[2]=a[3]=9;
if (n<1000&&m<1000||n%100!=0||m%100!=0||(n+m)<1500) {cout<<-1<<endl;continue;}
if (m>1000&&m<1500) n-=500,t++,m-=1000;
if (m<1000&&m>500) n-=1000,t++,m-=500;
if (m<500) n-=1500,t+=2;
sss();
ss();
if (p==true) cout<<t<<endl;
else cout<<-1<<endl;
}
}
站外题,百度无果,0分