728x90
시간 제한 : 2초
메모리 제한 : 128MB
입력
첫째 줄에 수 N이 주어진다. 이 수는 2,147,483,647보다작거나 같은 자연수이다.
출력
첫째 줄에 N이 유진수이면 YES, 아니면 NO를 출력한다.
소스코드
#include <iostream> #include <vector> #include <math.h> using namespace std; int main(void) { int n, tmp, sub1, sub2, size; vector<int> arr; bool check = false; cin >> n; tmp = n; while (tmp > 0) { arr.push_back(tmp % 10); tmp /= 10; } size = arr.size(); if (size > 1) { for (int i = 0; i < size; i++) { sub1 = sub2 = 1; for (int j = 0; j <= i; j++) sub1 *= arr[j]; for (int j = i + 1; j < size; j++) sub2 *= arr[j]; if (sub1 == sub2) { check = true; break; } } } if (check) cout << "YES"; else cout << "NO"; }
Tip
자릿수 기준으로 계산을 이어가면서 유진수인지 아닌지를 판단하면 된다. 이 부분을 수학으로 분류한 이유는 모르겠고, 이 문제는 시뮬레이션 쪽으로 보는 게 더 맞을 것 같다.
728x90
'Computer Science > Algorithm Problem' 카테고리의 다른 글
백준] 3474 - 교수가 된 현우(ACM-ICPC Regionals) (0) | 2018.05.08 |
---|---|
백준] 2037 - 문자메세지(ACM-ICPC Regionals) (0) | 2018.05.05 |
백준] 2458 - 키 순서(KOI 2011 지역본선) (0) | 2018.04.22 |
백준] 14501 - 퇴사 (0) | 2018.04.21 |
백준] 5212 - 지구 온난화(COCI 2012/2013) (0) | 2018.04.20 |