Link https://www.acmicpc.net/problem/1356
소스결과 1984 KB / 0 ms
출처 Baekjoon
언어 C++ 17
분류 수학
설명
어떤 수를 10진수로 표현한 후 그 수를 두 부분으로 나눠 각 부분의 자리수의 곱이 일치하는 경우가 존재하는 수를 출력한다.
[ 출처 : Google Image ]
유진이란 말을 듣고 떠오른건 미스터 션샤인의 유진 초이...
주어지는 수를 통해 두 부분으로 나눈 후 각 자리의 곱이 일치하는 경우가 존재하면 그 수는 유진수이고 YES로 출력한다. 반대의 경우는 NO
주어진 수를 각 자리로 나누어 배열에 저장한 후 범위를 나눠 곱해 일치 하는지를 확인 하는 방법으로 구현했다.
간단 간단쓰
알고리즘
1. 주어진 수의 길이를 log 함수를 통해 구한다.
2. 수어진 수를 각 자리 수로 나누어 배열에 저장한다.
3. 길이를 1부터 n - 1까지 나누어 문제 조건을 만족하는 경우를 탐색한다.
4. 만족하는 경우 YES를, 한번도 존재하지 않는다면 NO를 출력한다.
소스코드
#include <iostream>
using namespace std;
const int MAX = 10;
char input[MAX + 1];
int len;
bool yuZin(int cut)
{
int left = input[0] - '0';
int right = input[cut] - '0';
for (int i = 1; i < cut; i++)
left *= input[i] - '0';
for (int i = cut + 1; i < len; i++)
right *= input[i] - '0';
return left == right;
}
int main()
{
cin >> input;
bool check = false;
while (input[len] != '\0')
len++;
for (int i = 1; i < len; i++)
check |= yuZin(i);
if (check)
cout << "YES";
else
cout << "NO";
return 0;
}
'Algorithm > Mathematics' 카테고리의 다른 글
Baekjoon 16563 어려운 소인수분해 (0) | 2019.03.31 |
---|---|
Baekjoon 13458 시험감독 (0) | 2019.03.08 |
BaekJoon 1074 Z (0) | 2019.01.29 |
BaekJoon 1076 저항 (0) | 2019.01.21 |
BaekJoon 1652 누울 자리를 찾아라 (0) | 2019.01.21 |