C言語によるゲームの勝者の判定です。
石の数と人数から、何人目が勝つか判定するプログラムです。
・問題
K 個の石から、P 人が順番に1つずつ石を取るゲームがあります。
P 人目が石を取った時点で、まだ石が残っていれば、また1人目から順番に1つずつ石を取っていきます。
このゲームでは、最後の石を取った人が勝ちとなります。
K とP が与えられたとき、何人目が勝つか判定するプログラムを作成してください。
・入力される値
入力は以下の形式で与えられる。
n
K1 P1
K2 P2
:
KN PN
1行目にはゲームを行う回数 N (1 ≤ N ≤ 100) が与えられる。
続く N 行に、i 回目のゲームにおける石の個数 Ki (2 ≤ Ki ≤ 1000) と、ゲームに参加する人数 Pi (2 ≤ Pi ≤ 1000) が与えられる。
・期待する出力
それぞれのゲームについて、何人目が勝つかを1行に出力する。
僕が作成、提出したコードは、以下のとおりです。
/* Problem Set from Volume2 0297 : The Last One is the Best http://judge.u-aizu.ac.jp/ C言語によるゲームの勝者の判定 https://neguse-atama.hatenablog.com */ #include<stdio.h> int main(void){ int N,K,P; scanf("%d",&N); while(N--){ scanf("%d %d",&K,&P); K=K%P; if(K==0){ K=P; } printf("%d\n",K); } return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/
Problem Set from Volume2 0297 : The Last One is the Best