이 문제에서는 두 개의 숫자 n과 합이 주어집니다. 합이 합과 같은 n자리 숫자를 모두 출력해야 합니다. 이 문제에서 앞에 0이 있는 숫자는 고려되지 않습니다.
문제를 이해하기 위해 예를 들어보겠습니다.
입력:n =2, 합계 =5출력:14 23 32 41 50설명:5에 있는 모든 숫자의 자릿수의 합입니다.
이 문제를 해결하려면 주어진 합계 값으로 합계가 있는 모든 n자리 숫자를 찾아야 합니다. 이를 위해 우리는 모든 값으로 한 자리 자리를 고정하고 그 위치가 짝수 또는 홀수임을 기반으로 조건이 충족되도록 숫자의 다른 자리에서 값을 호출합니다.
예
위의 솔루션을 구현하는 프로그램 -
#include네임스페이스 사용 std;void PrintNumberWithDigitSum(int n, int sum, char* out, int index) { if (index> n || sum <0) return; if (인덱스 ==n) { if(합 ==0) { 아웃[인덱스] =' '; cout <<출력 <<" "; } 반품; } for (int i =0; i <=9; i++) { out[index] =i + '0'; PrintNumberWithDigitSum(n, 합계 - i, 출력, 인덱스 + 1); }} 무효 numberWithSum(int n, 정수 합계) { char out[n + 1]; for (int i =1; i <=9; i++) { out[0] =i + '0'; PrintNumberWithDigitSum(n, 합계 - i, 출력, 1); }}int main() { int n =3, 합계 =6; cout<<"합이 "< 출력
합이 6인 세 자리 숫자는 모두 -105 114 123 132 141 150 204 213 222 231 240 303 312 321 330 402 411 0 420 501 0 510 6입니다.