codeforces#397C Table Tennis Game 2
cf765

where

思考

此題目中的條件為:

最多堆的話,那麼每一堆中,能拿出一堆的要盡量拿,也就是該堆數量除以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;

}
*****
Written by Mi on 16 February 2017