where
思考
此題目中的條件為:
- 每一局完結的分數為 k
- input給的是最終完結的總分數 -> 沒完局的情況為 -1
- 求局數最大 -> 兩堆且以k個為一堆,分出最多堆
最多堆的話,那麼每一堆中,能拿出一堆的要盡量拿,也就是該堆數量除以k。
而拿完剩下的,可以想成是另一個人贏局的時候,自己這方所得到的分數。
那麼沒完局的情況就是,A拿完有剩下,但B卻沒有任何一場贏局,反之亦然。
Code
#include <bits/stdc++.h>
using namespace std;
int T, N, M, Q;
void ini(void){
cin>>T>>N>>M;
}
long long sol(void){
//兩方都無法完局的情況
if(N + M < T) return -1;
//一方有剩,另一方無法完局的情況
if(N % T && M < T) return -1;
if(M % T && N < T) return -1;
//Output
return (long long)(N / T) + (long long)(M / T);
}
int main(void){
int i, j;
ini();
cout<<sol()<<endl;
}