티스토리 뷰
문제
문제는 0부터 9까지 모든 수를 한 번씩 사용해서 다섯자리 정수 2개를 만들때, (0이 앞에오는 4자리수도 O.K.)
N으로 나눈 관계에 있는 두 수를 찾으라는 문제이다. 그냥 읽어보면 된다.
반복적 완전 탐색으로 풀 수밖에 없으나 어차피 100000번 이내 for문을 돌리기 때문에 괜찮을 것 같다.
그리고 각 숫자가 다 한번씩 나왔나 체크할 때 bit를 OR하는 기법을 사용했는데 꽤 유명한 기법인 것 같으니까 그것을 기억해두자. 기법의 설명은 주석에 있다.
다음은 코드다.
#include<stdio.h>
int main() {
int N,temp,used,c=0;
while (scanf("%d",&N) && N != 0) {
//if N is defined, range of fghij can be calculated
bool emerged=false;
if (c++ > 0) printf("\n");
for (int fghij = 1234; fghij <= 98765 / N; fghij++) {
int abcde = fghij * N;
used = (fghij < 10000); //if fghij is under 10000, 0 is used in fghij
//now have to compare
/* How to know if all bits are between 0~9 emerged-bitwise calculation trick
IDEA: if we make variable named 'used',
and change emerged digit 0~9 to
1<<0~1<<9, sum of all changed digit have to be 1111111111 in 2-digit system
thus we process used = used | 1 << (temp % 10)
than if (temp%10)is emerged and ored before, used don't changed
if(temp%10)is not emerged, than 1<<temp%10 is plused to used
->thus we get 1111111111 if 0~9 all emerged
->this bitmask method is faster than array-comparison method
*/
temp = abcde;
while (temp) {
used = used | 1 << (temp % 10);
temp = temp / 10;
}
temp = fghij;
while (temp) {
used = used | 1 << (temp % 10);
temp = temp / 10;
}
if (used == (1 << 10) - 1) {
printf("%0.5d / %0.5d = %d\n", abcde, fghij, N);
emerged = true;
}
}
if (emerged == false) printf("There are no solutions for %d.\n", N);
}
return 0;
}
'기초 알고리즘 문제 풀이' 카테고리의 다른 글
30. Uva-750 Queens Chess Problem //Recursive Backtracking (0) | 2020.02.26 |
---|---|
29. UVa-12455 Bars //Making subset using Bitmask-method (0) | 2020.02.25 |
27. UVa-10954 Add all //Greedy (0) | 2020.02.24 |
26. Uva-1203 Argus //Priority Queue & 비교연산자의 특수화 (0) | 2020.02.23 |
25. UVa-11849 CD (0) | 2020.02.23 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 연속 신호
- CS
- 밑바닥부터 시작하는 딥러닝
- 머신 러닝
- NLP
- 이산 신호
- 영상처리
- 머신러닝
- CNN
- 신경망
- 영상구조
- 이미지처리
- 순환 신경망
- Neural Network
- 사진구조
- Andrew ng
- 컴퓨터 과학
- 인덱스 이미지
- 매트랩
- gradient descent
- Logistic Regression
- 신호 및 시스템
- 딥러닝
- ML
- 이미지
- rnn
- 매트랩 함수
- RGB이미지
- 컴퓨터과학
- 자연어 처리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함