Baekjoonアルゴリズム | 4673番問題: セルフナンバー
出典
https://www.acmicpc.net/problem/4673
問題
Baekjoon Online Judgeの4673番問題、セルフナンバーを解きます。
入力
正確な入力形式と制約は元の問題文に従います。
出力
問題で求められる答えを出力します。
サンプル入力 1
サンプル出力 1
1 3 5 7 9 20 31 42 53 64 | | <-- a lot more numbers | 9903 9914 9925 9927 9938 9949 9960 9971 9982 9993
アルゴリズム分類
- 数学
- 実装
- 全探索
解説
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<Integer> notSelfNumber = new HashSet();
for(int i = 1; i <= 10000; i++) {
int sum = i;
if(i < 10){
sum += i;
} else {
int length = String.valueOf(i).length();
for(int j = 1; j <= length; j++){
if(j == 1){
sum += i % 10;
} else {
int y = 1;
for(int x = 1; x < j; x++) {
y = y * 10;
}
sum += (i / y) % 10;
}
}
}
notSelfNumber.add(sum);
}
for(int i = 1; i <= 10000; i++) {
if (notSelfNumber.contains(i)) {
continue;
}
System.out.println(i);
}
}
}
public class Main {
public static void main(String[] args) {
boolean[] notSelfNumber = new boolean[10000];
for (int i = 1; i <= 10000; i++) {
int sum = i;
int n = i;
while (n != 0) {
sum += (n % 10);
n /= 10;
}
if (sum - 1 < notSelfNumber.length) {
notSelfNumber[sum - 1] = true;
}
}
for (int i = 0; i < 10000; i++) {
if(notSelfNumber[i] == true){
continue;
}
System.out.println(i + 1);
}
}
}