728x90
문제 : 4375번: 1 (acmicpc.net)
4375번: 1
2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오.
www.acmicpc.net
풀이과정
1, 11, 111, 1111 ...
이렇게 자리수가 하나씩 늘어난다고 할 때 입력값 n의 배수인 가장 작은 수의 자리수를 구하는 문제였습니다.
ex) 답이 1111이라면 4 출력
한자리씩 계속해서 늘려가면서 답을 비교해보면 좋겠지만 무한히 늘어난다면 int형으로 담을 수 없기 때문에
모듈러 연산을 통해 풀이할 수 있었습니다.
풀이의 주석을 참고해주세요
#include <iostream>
#include <vector>
#include <stdio.h>
#include <string>
#include <string.h>
#include <algorithm>
#include <queue>
#include <stack>
using namespace std;
int main() {
int n;
while (cin >> n) {
int num = 0;
int cnt = 0;
while(1) {
// 자리수 추가
num = num*10 +1;
// 모듈러 연산을 통해 무한히 커지는걸 방지
num %= n;
cnt++;
if(num == 0) {
printf("%d\n",cnt);
break;
}
}
}
}728x90
'algorithm' 카테고리의 다른 글
| [프로그래머스] - "신고 결과 받기" C++ / map (0) | 2022.07.11 |
|---|---|
| 백준 4375 - 1 (모듈러 연산) (0) | 2022.05.03 |
| 백준 14500 - 테트로미노 (0) | 2021.09.30 |
| 백준 17298 오큰수 (stack) (0) | 2021.09.26 |
| 백준 2109 순회 강연 ( greedy ) (0) | 2021.09.25 |