平方和
1149 ワード
質問する
いくつかの自然数Nは、その平方数以下の和として表すことができる.例えば、11=32+12+12(3項).この表現方法はいろいろあるが、11の場合、11=22+22+12+12+12(5項)でもよい.この場合、数学者のシェクラット氏は「11は3つの項の二乗和で表すことができる」と述べた.そう言います.また,11はそれより少ない項の二乗和で表すことができないので,11の和で表すことができる二乗数項の最小個数は3である.
与えられた自然数Nを平方数の和として表す場合は,プログラムを記述してその項の最小個数を求める.
入力
最初の行は自然数Nを与える.(1 ≤ N ≤ 100,000)
しゅつりょく
与えられた自然数を平方数の和として表すと、その平方数項の最小個数が出力される.
入力例1
7
サンプル出力1
4
に答える
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String args[]) throws NumberFormatException, IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
StringBuilder builder = new StringBuilder();
int N = Integer.parseInt(reader.readLine());
int[] d = new int[N+1];
for (int i = 1; i <= N; i++) {
d[i] = i; //d[7] = 1^2+1^2+1^2+1^2+1^2+1^2+1^2 = 7항
for (int j = 1; j*j <= i; j++) {
if(d[i-(j*j)]+1<d[i])
d[i] = d[i-(j*j)]+1;
}
}
System.out.println(d[N]);
}
}
Reference
この問題について(平方和), 我々は、より多くの情報をここで見つけました https://velog.io/@yuiopre98/백준-제곱수의-합テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol