CG 01ジョセフ問題

4023 ワード

【問題の説明】
ジョセフと彼の仲間はN人で輪を作った.輪の位置によって、一人一人に番号があります.1からNまでです.最後の人Nは最初の人1番とつながっています.
今彼らはリーダーを選出しなければならない.選択方法は、1日からM人ごとに1人を淘汰し、最後に残った人がリーダーです.
例えば7人がいて、Mは3で、つまり3人ごとに1人を淘汰することを約束しました.では、まず3番を淘汰し、6番、2番、7番、5番、1番を順番に淘汰し、最後に残りの4番がリーダーです.
ジョセフはこのリーダーになりたいと思っています.では、NとMを与えた後、ジョセフにリーダーになるには何番でなければならないか教えてもらえますか.
【入力形式】
最初の行の正の整数t(10≦t≦100)を入力し、テストデータのセットがどれだけあるかを示します.
後ろにt行があり、各行に2つの正の整数N,M(2≦M≦20)があり、中間は1つのスペースで区切られている.
40%のテストデータ1≦N≦10;
30%のテストデータ1≦N≦102;
20%のテストデータ1≦N≦103;
10%のテストデータ1≦N≦104;
【出力形式】
各テストデータのセットについて、正の整数が1行を占める:ヘッダの番号を出力します.
【サンプル入力】
4 1 3 7 3 2 3 4 2
【サンプル出力】
1 4 2 1
#include 
using namespace std;
int Win(int n,int m)//     ,      
{
     
	int i,s=0;
	for (i=2;i<=n;i++)
	{
     s=(s+m)%i;} 
	 return s+1;
 } 
 int main()
 {
     
 	
 	int t;
 	cin>>t;
 	for(int i=0;i<t;i++)
 	{
     int n,m;
	 cin>>n>>m;
	 cout<<Win(n,m)<<endl;
	 }
 	return 0;
 }

ジョセフループ–数式法【繰返し式】