코딩테스트/백준 코딩
백준 / 정수론 / 뒤집어진 소수 (boj10859, c11)
견우직녀달
2023. 6. 22. 00:22
문제
https://www.acmicpc.net/problem/10859
10859번: 뒤집어진 소수
어제 자다가 알람 시계를 떨어뜨렸는지, 08:15분이 51:80분이 되어 있었다. 그때 나는 디지털로 표시된 어떤 숫자는 180도 뒤집혔을 때도 숫자가 될 수 있다는 걸 깨달았다. 소수 18115211이 디지털로
www.acmicpc.net
입출력
해설
1. 입력 들어오는 수가 소수인지 판별한다.
2. 소수일 때 뒤집는다.
3. 뒤집으면서 3,4,7이 들어있으면 수가 될 수 없으므로 그만 뒤집고 no를 출력한다.
4. 다 뒤집었을 때 소수인지 판별하면 된다.
정답코드
c언어
더보기
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
/*
https://www.acmicpc.net/problem/10859
10859번 뒤집어진 소수
*/
int trans[12]={0,1,2,-1,-1,5,9,-1,8,6};
long long n,a;
char result[5]="yes";
bool prime(long long n){
if(n==1)return 0;
for(long long i=2;i*i<=n;i++){
if(n%i==0)return 0;
}
return 1;
}
main(){scanf("%lld",&n);
if(prime(n)){
while(n){
if(n%10 == 3 || n%10 == 4 || n%10 ==7){
strcpy(result,"no");break;
}
a=a*10+trans[n%10];
n/=10;
}
}else strcpy(result,"no");
if(result[0]!='n' && !prime(a))strcpy(result,"no");
printf("%s",result);
}