アルゴリズム番号をスクリーニングJAVAブルーブリッジカップトレーニング

アルゴリズム番号をスクリーニング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;
				}
			}
		}
	}
	

公開された17元の記事 ウォンの賞賛0 ビュー366

おすすめ

転載: blog.csdn.net/qq_36551453/article/details/104489096