演習課題「やや複雑なハッシュ関数の実装」
整数n, a, b, modが与えられ、さらにn個の整数 x_1からx_n が与えられます。
次のようなハッシュ関数H(x)を実装し、各x_1, x_2, ..., x_nをH(x)に与えたときのハッシュ値を求めてください。
H(x) = (a * x + b) % mod
期待する出力値
5
3
0
6
4
#03:やや複雑なハッシュ関数の実装
このチャプターでは、やや複雑なハッシュ関数の実装について学習します。
レベルアップ問題集「ハッシュメニュー」に収録されている「やや複雑なハッシュ」の問題を通して、具体的なハッシュ関数を実装していきます。
H(x) = (a * x + b) % mod
入力
・整数n, a, b, mod
・n個の整数 x_1, x_2, …, x_n
出力
・各x_i (1 ≦ i ≦ n)について、H(x_i)を計算した結果
import java.util.*;
public class Main {
static int H(int x, int a, int b, int mod) {
return (a * x + b) % mod;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a = sc.nextInt();
int b = sc.nextInt();
int mod = sc.nextInt();
for (int i = 0; i < n; i++) {
int x = sc.nextInt();
System.out.println(H(x, a, b, mod));
}
}
}