パーフェクトワールド2017秋の採用プログラミングの質問
(2020-09-02記録の書き換え)
配列内のkの最小数を順番に見つけます
順序付けされていない配列の場合、配列内の要素は異なる整数です。最小のk個の数値を返してください。順序は、元の配列内の要素の順序と一致しています。
説明を入力してください:
最初の行は配列の長さn、返される必要のある数k、n> = k
次のn行は配列のn要素であり、各行は整数です
出力の説明:
出力はk行で、各行は整数です
例:
入る
4 2
1
2
3
4
出力
1
2
制限時間
C / C ++言語:100MSその他の言語:2100MS
メモリ制限
C / C ++言語:10KBその他の言語:524298KB
私の答え
import java.util.Scanner;
import java.util.Arrays;
public class Main
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int k = scanner.nextInt();
int[] arr = new int[n];
int[] a = new int[n];
for(int i = 0 ; i < n ; i++)
{
arr[i] = scanner.nextInt();
a[i] = arr[i];
}
Arrays.sort(a);
int t = a[k - 1];
int count = 0;
for(int i = 0 ; i < n ; i++)
{
if(arr[i] <= t && count <= k)
{
System.out.println(arr[i]);
count++;
}
else if(count > k)
{
break;
}
}
}
}
Bilibili2019秋募集テクニカルポストプログラミングの質問
(2020-08-14記録の書き換え)
整数配列が与えられた場合、3つの数値があり、合計がNであるかどうかを判断します。
説明を入力してください:
入力は行です。
コンマが整数の配列になる前は、各要素はスペースで区切られます。コンマの後はNです。
出力の説明:
出力ブール値
Trueは、合計がNの数値が3つあることを意味します。Falseは、合計がNの数値が3
つないことを意味します。
例:
入る
1 2 3 4 5,10
出力
本当
備考:
配列の長さは2000を超えないため、数値はすべてint範囲の正の整数です。
私の答え
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
String[] input = s.split(",");
String[] arr = input[0].split(" ");
int N = Integer.parseInt(input[1]);
int i, j, k, a, b, c;
for(i = 0 ; i < arr.length - 2 ; i++)
{
a = Integer.parseInt(arr[i]);
if(a >= N) continue;
for(j = i + 1 ; j < arr.length - 1 ; j++)
{
b = Integer.parseInt(arr[j]);
if(a + b >= N) continue;
for(k = j + 1 ; k < arr.length ; k++)
{
c = Integer.parseInt(arr[k]);
if(a + b + c == N)
{
System.out.println("True");
return;
}
}
}
}
System.out.println("False");
}
}
カプセル機
ニアン22とニアン33はリトルTVからカプセル玩具の仕事を受けました
。カプセル機2号とカプセル機3号の2台のカプセル機があります。ニアン22はカプセル機2号を使用し、ニアン33はカプセル玩具を使用しています。カプセルマシンNo.3。
コインカプセルマシンは必要ありませんが、特別な能力:
カプセルマシン2:プラグx(xの範囲が> 0 =正の整数)の場合ミニカプセルおもちゃは、2x +1番目の
ミニカプセルおもちゃマシンにねじることができますNo. 3:x(xの範囲は> = 0の正の整数)カプセルを差し込む
と、カプセルを手に持たずに2x + 222ニアンと33ニアンにねじることができます。計画。「順番にひねる」(最初に始める人は限定されず、ねじれた卵は相手に渡すことができます)、「最小」回数を使用して、正確に同じ回数だけねじることができるようにします。 Nそしてそれを小さなテレビマスターに渡してください。
説明を入力してください:
リトルTVマスターが必要とするN個のガシャポンを表す正の整数を入力します。
出力の説明:
文字列を出力します。各文字はガシャポンマシンを表し、文字には「2」と「3」のみを含めることができます。
例:
入る
10
出力
233
備考:
1 <= N <= 1e9
私の答え
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
String s = "";
while(N != 0)
{
if(N % 2 == 0)
{
N = (N - 2) / 2;
s = "3" + s;
}
else
{
N = (N - 1) / 2;
s = "2" + s;
}
}
System.out.println(s);
}
}
マイクロソフトチャイナ2021学校募集筆記試験の質問
(思い出+答えの一部)
行方不明のボウル
テーブルの上にN個のボウルが一列に並んでいます。各ボウルには、最初と最後のボウルのビー玉の数の合計が2番目と2番目の最後のボウルのビー玉の数の合計と等しくなるようにいくつかのビー玉が含まれています。ボウルは、ビー玉の数が多い順に保たれています。
しばらくすると、N-1個のボウルしかないことがわかりました。最初と最後のボウルはその位置にありますが、その間のボウルの1つがなくなっています。
N%2 == 0の場合、不足しているボウル内のビー玉の数を見つけます。
入力仕様:
input1:
N-1、ボウルの数
input2:
サイズN-1の配列で、各ボウルにビー玉の数を格納します。
出力仕様:
関数は、欠落しているボウル内のビー玉の数を返す必要があります。
例1:
input1:
5
input2:
{1,3,5,9,11}
出力
7
説明:
2つのボウルのビー玉の合計は12になるはずです。したがって、不足しているボウルはボウル4であり、7つのビー玉が含まれている必要があります。
例2:
input1:
5
input2:
{2,4,6,10,12}
出力
8
================================================== =
ラブレター
あなたは友達にラブレターを書きます。ただし、友達が読む前に、他の誰かがそれを受け取り、各単語の文字を左から右にK回回転させます。この文字のシフト後も同じままである単語の数を見つけます。
注:単語の間に複数のスペースを含めることができます。
入力仕様:
input1:
単語の文字列
input2:
K、回転が発生する回数
出力仕様:
関数は正しい単語の数を返す必要があります。
例1:
input1:
llohe ereth
input2:
2
出力
0
説明:
例1では、「lloheereth」は回転した文字列です。したがって、元の文字列は「hello there」でしたが、これは正しくありません。したがって、答えは0です。
例2:
input1:
君は
input2:
3
出力
1
説明:
例2では、「adaada」を3回転させると、「adaada」が返されます。したがって、答えは1です。
私の答え
import java.util.Scanner;
public class Main
{
private static String rotate(String word,int K)
{
String str1 = word.substring(0, K);
String str2 = word.substring(K);
return str2 + str1;
}
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
String input1 = scanner.nextLine();
if(input1.trim().equals(""))
{
System.out.println(0);
return;
}
int input2 = scanner.nextInt();
int count = 0;
String[] words = input1.trim().split("\\s+");
for(int i = 0 ; i < words.length ; i++)
{
String cword = words[i].trim();
int r = input2 % cword.length();
if(r == 0)
{
count++;
}
else if(cword.equals(rotate(cword, r)))
{
count++;
}
}
System.out.println(count);
}
}
================================================== =
究極の戦い
ピッコロジュニアは彼の父、ピッコロ大王とまったく同じコピーであり、それは彼らがお互いの動きと攻撃の強さを知っていて、等しく強力であることを意味します。ピッコロジュニアは同数の攻撃を使用し、父親を尊重するために、父親の前に追加の攻撃を行うことはありません。
しかし、実際の攻撃はこのようには発生せず、悟空は過去を訪れ、攻撃シーケンスを変更しました。つまり、元の制約を維持する必要がある場合は、ピッコロジュニアの攻撃をピッコロ王の攻撃に置き換えました。
そのために必要な交換の最小数はいくつですか?
入力仕様:
input1:
キングは「K」、ジュニアは「J」を含むシーケンス。
出力仕様:
必要な交換の最小数を返します。これができない場合は、-1を返します。
例1:
input1:
JK
出力
2
説明:
キングが最初に攻撃する必要があるため、JをKに変更し、同じ数の攻撃を行うには、KをJに置き換える必要があります。
例2:
input1:
KKKK
出力
2
説明:
2番目と4番目の動きはJの動きに変更する必要があります。