JAVA 블루 브릿지 컵 훈련 알고리즘 외로운 번호
자원 제약 조건
시간 제한 : 메모리 제한을 1.0s : 256.0MB를
문제 설명
하나 둘, 둘, 셋, 세 가지를 : 말하여 도덕.
어떤 양의 정수 n에 대해, 우리는 D (n)에 더하여 각종 숫자와 N의 조성에 대한 N의 값을 정의한다. 예를 들어, D는 (23) = 23 + 2 + 3 = 28, D (1481) = 1481 + 1 + 4 + 8 + 1 = 1495.
N, D (N) : 따라서, 시작점으로 상관 없음 부여하면 점점 시퀀스로서 구성 될 수있다 ... D (d (N)), D (d (d (N))) (33) 시작, 예를 들어 증분 서열
33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ...
우리는 N이 발전기의 D (n)를 호출하고, 상기 열들의 수, (33) (39)는 발전기 (51) 등이며, 발전기 (39)이다. 어떤 도면에도 두 발생기, 예컨대 (101), 91 (100)에 의해 생성 될 수있을 수있다. 그러나 더 발전기 등 (42)와 같은 일부 수치는 없다. 우리는 외로운 그림이라는 등의 번호를 호출합니다.
입력 포맷
라인, 양의 정수 n.
출력 형식
의 모든 외로운 미만 N, 라인 당 하나의 디지털 출력의 오름차순이다.
입력 샘플
40
샘플 출력
. 1
. 3
. 5
. 7
. 9
(20)은
31 인
데이터 크기 및 규칙
N <= 10000
(질문하지 마십시오 폭력 문의)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sca=new Scanner(System.in);
int[] a=new int[10001];
for(int i=1;i<10001;i++) {
int sum=i;
String s=String.valueOf(i);
while(sum<=10000) {
for(int j=0;j<s.length();j++) {
int temp=s.charAt(j)-'0';
sum+=temp;
}
if(sum>10000) {
break;
}
a[sum]=1;
s=String.valueOf(sum);
}
}
int n=sca.nextInt();
for(int i=1;i<=n;i++) {
if(a[i]==0) {
System.out.println(i);
}
}
}
}