Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) C. Table Te...

本文解析了CodeForces上C.TableTennisGame2问题,该问题是关于两个玩家进行乒乓球比赛的计分问题。通过分析比赛得分规则,提供了一种计算可能最大比赛场数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C. Table Tennis Game 2

题目连接:

http://codeforces.com/contest/765/problem/C

Description

Misha and Vanya have played several table tennis sets. Each set consists of several serves, each serve is won by one of the players, he receives one point and the loser receives nothing. Once one of the players scores exactly k points, the score is reset and a new set begins.

Across all the sets Misha scored a points in total, and Vanya scored b points. Given this information, determine the maximum number of sets they could have played, or that the situation is impossible.

Note that the game consisted of several complete sets.

Input

The first line contains three space-separated integers k, a and b (1 ≤ k ≤ 109, 0 ≤ a, b ≤ 109, a + b > 0).

Output

If the situation is impossible, print a single number -1. Otherwise, print the maximum possible number of sets.

Sample Input

11 11 5

Sample Output

1

Hint

题意

两个人在打乒乓球,每一个set是这样的:每一局会有一个人胜利,胜利者得1分,失败者得0分,如果有人得了k分,那么这个set结束。

现在这两个人打了若干个set,A总共拿了a分,B总共拿了b分,问你可不可能。

题解:

答案比较显然是a/k+b/k。

但是注意这个坑点,2 3 1这个数据。

把这个数据过了就好了。

代码

#include<bits/stdc++.h>
using namespace std;
long long k,a,b;
int main()
{
    cin>>k>>a>>b;
    if(a<b)swap(a,b);
    if(a<k&&b<k){
        cout<<"-1"<<endl;
        return 0;
    }
    long long ans = a/k + b/k;
    if(a%k&&b/k==0){
        cout<<"-1"<<endl;
        return 0;
    }
    if(a/k==0&&b%k==0){
        cout<<"-1"<<endl;
        return 0;
    }
    cout<<a/k+b/k<<endl;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值