help
  • 板块灌水区
  • 楼主Zhouyc2009
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/3/26 11:09
  • 上次更新2023/10/28 05:38:27
查看原帖
help
347750
Zhouyc2009楼主2022/3/26 11:09

题目:

奶牛露丝和博博参加猜谜游戏,猜谜采取抢答的方式,谁先答对的就得分。

猜谜分成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分

2022/3/26 11:09
加载中...