5、猜谜
描述
奶牛露丝和博博参加猜谜游戏,猜谜采取抢答的方式,谁先答对的就得分。
猜谜分成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;如果可能,输出露丝最多答对了多少题。
输入
多组测试数据。
第一行,一个正整数G,表示有G组测试数据。1<=G<=10。
第二行,两个整数: X和Y。0<=X,Y<=1000000。
输出
共G行,每行一个整数。
输入样例 1
5
900 900
47 1953
1800 0
1100 2000
4300 1100
输出样例 1
-1
-1
5
10
19
来源
2021年大沥镇信息学初中组试题
再附上我的80分代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n, x, y;
int main() {
cin >> n;
for (ll i = 1; i <= n; i++) {
cin >> x >> y;
ll s1 = 9, s2 = 9, s3 = 9, ss = 1, sss = 1;
if (y - 1000 >= 0) y -= 1000, ss--;
if (y - 500 >= 0) y -= 500, sss--;
for (ll j = 1; j <= 9; j++) {
if (y - 500 >= 0) s1--;
else break;
y -= 500;
}
for (ll j = 1; j <= 9; j++) {
if (y - 200 >= 0) s2--;
else break;
y -= 200;
}
for (ll j = 1; j <= 9; j++) {
if (y - 100 >= 0) s3--;
else break;
y -= 100;
}
ll ma = -1, sum = 0;
if (ss == 1)x -= 1000;
if (sss == 1)x -= 500;
for (ll f1 = 0; f1 <= s1; f1++)
for (ll f2 = 0; f2 <= s2; f2++)
for (ll f3 = 0; f3 <= s3; f3++)
if (f3 * 100 + f2 * 200 + f1 * 500 == x) sum = f1 + f2 + f3, ma = max(ma, sum + ss + sss);
cout << ma << endl;
}
return 0;
}
我知道我有的地方错了
比如:
5
900 2100
我输出了8!!!
但我又不知道怎么修改
求大佬们帮帮我
不要代码,只要思路