블루 브릿지 컵 외로운 수

문제 설명
  도덕경는 말했다 : 하나 둘, 둘, 셋, 세 가지.
  어떤 양의 정수 n에 대해, 우리는 D (n)에 더하여 각종 숫자와 N의 조성에 대한 N의 값을 정의한다. 예를 들어, D는 (23) = 23 + 2 + 3 = 28, D (1481) = 1481 + 1 + 4 + 8 + 1 = 1,495.
  사용자가 증가하는 순서 만들 수 있기 때문에, 출발 지점으로 상관 없음 주어진 : 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
나는 참조 https://blog.csdn.net/coding__girl/article/details/76302157 때문에하지 않을 것이다
. (1) #INCLUDE <비트 / STDC ++ H.>
 2  은 USING  스페이스 STD]
 . (3)  INT 플래그가 [ 10010이 ]; // 에서 플래그가 [I] = 0 외로운 인 수를 나타낸다 
4.  INT 의 main () {
 5.      INT N-]
 . 6      CIN >> N-]
 . 7       ( INT I = 1이다. ] 난 <N-가 나는 ++ ) {
 8.          INT ] SUM = 난 // 합 (d)의 값을 나타내고, (ⅰ) 
9.          INT의 m은 = 난; // 함께, 각 비트의 I 아웃 분할 중간 변수는 for 루프에 영향을 미칠 것이며, 직동 난을 피하기 위해 
10          그동안 (m) {
 . 11             % + m = 합계 10 ,
 12는              m / = 10 ;
 13이다          }
 14          에서 플래그 [합] = 1. ; //이 . 표지되지 외로운의 수의 합을 나타내는 1 - 
15      }
 16       ( INT I = . 1 , I는 <N-; I ++ ) {
 . 17          IF (플래그에 [I] == 0 ) {
 18는              COUT I << << ENDL]
 . 19          }
 20이다      }
 (21)는      복귀  0 ;
 22이다 }

 

추천

출처www.cnblogs.com/fx1998/p/12656797.html