[白駿1629]乗算
AにBを乗じた数
これはabに聞く質問です.Math.pow()で解くことができますが、正解ではありません.
サイズが2147483647の各変数があればintの最値となるため、値の範囲を超えているだけでなく、演算量がn程度であるため、問題は解決できない.したがって、この値のタイプは長く変化し、実行時間n回よりも速い方法を追求する.
a 7=a6⋅a
a 6=a3 a3
a3 = a2 a
a2 = a1 * a1
a1 = a0 =1
再帰アルゴリズムを用いて,問題をゼロに分割し,答えをゼロに連続的に貼り付けた.<注意>奇数の場合、この分割にaを乗じる数処理 .
これはabに聞く質問です.Math.pow()で解くことができますが、正解ではありません.
サイズが2147483647の各変数があればintの最値となるため、値の範囲を超えているだけでなく、演算量がn程度であるため、問題は解決できない.したがって、この値のタイプは長く変化し、実行時間n回よりも速い方法を追求する.
선형방식의 제곱
// loop 방식
public static int Loop_pow(int a, int n) {
int res = 1;
for (int i = 1; i <= n; i++) {
res *= a;
}
return res;
}
// 재귀 방식.
public static int Recursion_pow(int a, int n) {
if (n == 0)
return 1;
return a * Recursion_pow(a, n - 1);
}
反復二乗アルゴリズム->分割征服アルゴリズムa 7=a6⋅a
a 6=a3 a3
a3 = a2 a
a2 = a1 * a1
a1 = a0 =1
再帰アルゴリズムを用いて,問題をゼロに分割し,答えをゼロに連続的に貼り付けた.
public static int log_pow(int a, int n) {
if (n == 0)
return 1;
else if (n % 2 == 0) {
int k = log_pow(a, n / 2);
return k * k;
} else {
int k = log_pow(a, (n - 1) / 2);
return a * k * k;
}
}
Reference
この問題について([白駿1629]乗算), 我々は、より多くの情報をここで見つけました https://velog.io/@admin1194/백준-1629곱셈テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol