사자자리

[C언어] 백준 1356번: 유진수 본문

C언어/C언어 문제

[C언어] 백준 1356번: 유진수

renne 2022. 7. 31. 02:20

https://www.acmicpc.net/problem/1356

 

1356번: 유진수

첫째 줄에 수 N이 주어진다. 이 수는 2,147,483,647보다 작거나 같은 자연수이다.

www.acmicpc.net

 

유진수: 어떤 수를 10진수로 표현한 뒤, 그 수를 두 부분으로 나눴을 때 (앞부분 자리수의 곱) = (뒷부분 자리수의 곱)

 

1236의 경우

1 ≠ 2 * 3 * 6

1 * 2 ≠ 3 * 6

1 * 2 * 3 = 6 → 유진수

#include <stdio.h>
#include <string.h>
int main(){
    int len, left, right;
    int judge = 0;
    char num[11];
    scanf("%s", num);
    len = strlen(num);

    if (len == 1){	//앞부분과 뒷부분으로 나눌 수 없으므로 무조건 NO
        printf("NO");
        return 0;
    }

    for (int i = 0; i < len - 1; i++){
        left = 1;
        right = 1;

        for (int j = 0; j <= i; j++)
            left *= num[j] - '0';	//앞부분 자릿수의 곱
        for (int j = i + 1; j < len; j++)
            right *= num[j] - '0';	//뒷부분 자릿수의 곱

        if (left == right){	//(앞부분 자릿수의 곱) = (뒷부분 자릿수의 곱)
            judge = 1;
            break;
        }
    }

    if (judge) printf("YES");
    else printf("NO");
    return 0;
}

 

Comments