P1326 足球
题目描述
我们当中有很多热爱中国足球的同学,我们都知道中超(中国足球超级联赛)的规则:
一场比赛中,若获胜(即你的得分严格大于对手得分)则获得 3 3 3 的积分,若打平(即你的得分等于对手得分)则获得 1 1 1 分,若失败(即你的得分严格小于对手得分)获得 0 0 0 积分。
这个问题很简单,假设 N N N 轮比赛中你一共攻入 S S S 个球,丢掉 T T T 个球,那么你可能获得的最大得分和最小得分是多少?
输入格式
多组数据,每组数据一行三个整数 S , T , N S,T,N S,T,N( 1 0 9 ≥ S , T ≥ 0 10^9\ge S,T \ge 0 109≥S,T≥0, 1 0 9 ≥ N ≥ 1 10^9\ge N \ge 1 109≥N≥1)。每个测试点内数据组数不超过 3 × 1 0 4 3\times 10^4 3×104 组。
输出格式
对于每组数据输出一行,两个整数表示最大得分和最小得分。
输入输出样例 #1
输入 #1
1 1 1
1 1 2
输出 #1
1 1
3 2
C++实现
#include
#include
using namespace std;
int main(){
long long mx, mn, s, t, n;
while(~scanf(“%lld %lld %lld”, &s, &t, &n)) {
mx = mn = 0;
if(s < n) {
mx += s * 3;
mx += n - s - 1;
if(!t)
mx++;
printf(“%lld “, mx);
}
else{
mx += (n - 1) * 3;
if(s - (n - 1) > t)
mx += 3;
else if(s - (n - 1) == t)
mx++;
printf(”%lld “, mx);
}
if(s > t){
mn += 3;
if(t < n - 1)
mn += n - 1 - t;
printf(”%lld “, mn);
}
else{
long long a = 3, b = 0;
if(t < n - 1)
a += n - 1 - t;
if(n > t - s)
b = n - (t - s);
printf(”%lld “, min(a, b));
}
printf(”\n”);
}
return 0;
}
后续
接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容