アルゴリズム番号をスクリーニングJAVAブルーブリッジカップトレーニング
資源制約の
制限時間:512.0メガバイト:メモリ制限を1.0秒
問題の説明は、
(nまで番号1)の配列を配置する、N個の個別の円を有します。3人に報告最初の個人countin(1-3からの報告数)から、円を終了します。私は残っている最後の人、ゲームが終了するまで、次の人から数を報告し続けるようになりました。
私はいくつかの最後に残った元番号が誰であるかを尋ねます。
例えば、円の中に8人:
13456782
残り報告3番出口の最初の時間の後に番号:
1245678(今から4 countin開始)
第二:いくつかの後に残っている、6出口を報告
124 578(現在のgettin数7から)
第3の数が報告された後、出口1、残り:
24578(現在のgettin数2から)
第四数が報告された後、5番出口、及び残り:
(今7 Countinから)2478
:2が終了した後、第五の数は残して、報告された
478(今から4 countinスタート)
の6倍の数が報告された後、8番出口、および残り:
47(4今gettinの数から)
最後の番号のオフ、4番出口、残りの後:
7
そうエンドでの滞在の数は7です。
入力フォーマット
正の整数n(1 <N <10000 )
出力は、フォーマット
の正の整数を、そして最終的にはその人の番号を残しました。
サンプル入力
8
サンプル出力
7
データサイズは、合意された
100個のデータの%、1 <N <10000。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sca=new Scanner(System.in);
int n=sca.nextInt();
int[] a=new int[n];
int index=0;
int temp=0;
int i=-1;
while(index!=n-1) {
temp++;
i++;
if(i==n) {
i=0;
}
while(a[i]!=0) {
i++;
if(i==n) {
i=0;
}
}
if(temp==3) {
temp=0;
a[i]=1;
index++;
//System.out.println(i+1);
}
}
for(int j=0;j<n;j++) {
if(a[j]==0) {
System.out.println(j+1);
break;
}
}
}
}