반응형

문제

문제 링크

 

2231번: 분해합

어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이

www.acmicpc.net

 

풀이

  분해합은 생성자보다 항상 크기 때문에 1부터 분해합-1까지의 생성자가 분해합을 만들 수 있는지 확인하면 된다.

#include <cstdio>
#include <string>

using namespace std;

int sum(int n){
  string tmp = to_string(n);
  for(int i = 0; i < tmp.size(); ++i)
    n += (tmp[i]-'0');

  return n;
}

int main(void){
  int n;
  scanf("%d", &n);

  for(int i = 1; i < n; ++i){
    if(sum(i) == n){
      printf("%d\n", i);
      return 0;
    }
  }
  printf("0\n");
  return 0;
}
반응형

+ Recent posts