質問の要件は次のとおりです。
Callatzの推測:
任意の自然数nについては、偶数の場合は半分を切り取ります。奇数の場合は、半分からカット(3N+1)を切り取ります。これを繰り返し削減し続けると、特定のステップで間違いなくn = 1を取得します。 Karazの推測を検証するとき、繰り返し計算を回避するために、再帰プロセス中に遭遇したすべての数を記録できます。たとえば、n = 3を検証する場合、3、5、8、4、2、および1を計算する必要があります。n= 5、8、4、および2を検証するとき、繰り返し計算なしでカラズの推測の信ity性を直接決定できます。シーケンス内の他の数字によって上書きされます。
検証する一連の数値を考慮して、いくつかのキー番号を検証する必要があるため、残りの数値を繰り返し検証する必要はありません。あなたの仕事は、これらの重要な番号を見つけて、大部分から小まで順番に出力することです。
入力形式:各テスト入力には、1つのテストケースが含まれています。行1は正の整数k(<100)を示し、行2はkの異なる正の整数n(1 <n <= 100)のk値を検証し、スペースで分離します。
出力形式:各テストケースの出力は1行を占有し、キー番号は大部分から小まで順番に出力されます。数字は1つのスペースで区切られていますが、最後の数字の後にスペースはありません。
サンプルを入力してください:
6
3 5 6 7 8 11
出力サンプル:
7 6
コードは次のとおりです。
<span style = "font-size:14px;"> Import java.util.arraydequ; java.util.arraylistをインポートします。 java.util.dequをインポートします。 java.util.listをインポートします。 java.util.queueをインポートします。 Java.util.scannerをインポートします。 java.util.sortedsetをインポートします。 java.util.treesetをインポートします。パブリッククラスPAT1005 {public static void main(string [] args){// todo auto-enerated methodスタブスキャナー= new Scanner(System.in); int numsize = scanner.nextint(); arraydeque <integer> newArrayDeque = new ArrayDeque <Integer>(); arraydeque <integer> closearraydeque = new arraydeque <integer>(); int i; while(scanner.hasnext()){//(i = 0; i <numsize; i ++){newarraydequ.add(scanner.nextint())のキーボード入力値を読み取ります。 } if(i> = numsize){break; }} int temp; for(integer integer:newArraydequ){//非クリティカルな数値をclosearrayd equate temp = integerに保存します。 while(temp!= 1){if(temp%2 == 0){temp = temp/2; if(newArraydequ.contains(temp))){closearraydequ.add(temp); }} else {temp =(temp*3+1)/2; if(newArraydequ.contains(temp))){closearraydequ.add(temp); }}}} sortedset <integer> sortedset = new treeset <integer>(); // sortedsetは、(integer integer:newArraydeque)のキー番号を保存するために使用されます{if(!closearraydeque.contains(integer)){sortedset.add(integer); }} int [] leftint = new int [sortedset.size()]; int j = sortedset.size()-1; for(integer integer:sortedset){leftint [j] = integer; j--; } for(int j2 = 0; j2 <leftint.length; j2 ++){//キー番号を大部分から小まで順に出力するif(j2 == leftint.length-1){system.out.println(leftint [j2]); } else {system.out.print(leftint [j2]+""); }}}}} </span>上記はこの記事に関するものです。すべての人の学習に役立つことを願っています。