hut 1054 Jesse's Code 문제 풀이 보고서
15139 단어 code
Description
Jesse는 수학광이다. 그는 고드바흐의 추측을 연구하는 것을 가장 좋아하기 때문에, 그의 컴퓨터 비밀번호도 모두 소수를 채택한다.그러나 같은 비밀번호를 계속 사용하는 것은 안전하지 않기 때문에 그는 자주 비밀번호를 바꿔야 한다.그러나 그는 자신의 비밀번호에 숫자만 표시할 수 있고 비밀번호의 한 명도 같지 않다.예컨대 124의 경우 124 142 214 241 412 421 6가지가 있다.그중 241과 421은 소수다.그의 비밀번호를 얻기 위해 (그의 기계에는 제4회 순우배 대학생 프로그래밍 경연의 제목이 저장되어 있다!)우리가 해독하는 것을 돕기 위해 사전을 만들어야 한다.당신이 우리를 돕기 위해 프로그램을 작성해 주십시오. (모두가 알고 있는 바와 같이 우리는 이 문제들을 얻는 것이 절실하기 때문입니다.)
Input
0 끝을 입력합니다.
Output
모든 결과를 작은 순서에서 큰 순서로 출력하다.결과가 없으면 NONE을 내보냅니다.각 그룹의 데이터 뒤에 빈 줄이 있습니다.
Sample Input
3 1 2 4 0
Sample Output
241 421
오랜만이네.
이 문제는 본질적으로 물문제가 출시되었지만, 나는 밤새도록 고민을 했는데, 주로next를 사용할 줄 몰랐다permutation ()이라는 강력한 함수를 기념해 보세요.
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <math.h>
4 #include<algorithm>
5 using namespace std;
6 int a[10];
7 int fun( int x )
8 {
9 for( int i=2; i<=(int)sqrt( x ); ++i )
10 {
11 if( x%i==0 )
12 return 0;
13 }
14 return 1;
15 }
16
17 int cmp( const void *a , const void *b )
18 {
19 return *( int * )a - *( int * )b;
20 }
21
22 int main( )
23 {
24 int n;
25 int jc[10]={1};
26 for( int i=1; i<=10; ++i )
27 {
28 jc[i]=i*jc[i-1];
29 }
30 while( scanf( "%d", &n ) !=EOF, n )
31 {
32 int i, j;
33 if( n == 9 )
34 {
35 puts( "NONE" );//
36 continue;
37 }
38 for( i=0; i<n; ++i )
39 {
40 scanf( "%d", &a[i] );
41 }
42 qsort( a, n, sizeof( a[0] ), cmp );
43 int s, f=1;
44 for(j=0; j<jc[n] ;j++,next_permutation( a,a+n))
45 {
46
47 s=0;
48 for(i=0;i<n;i++)
49 {
50 s=s*10+a[i];
51 }
52 if (fun(s))
53 {
54 printf( "%d
", s );
55 f=0;
56 }
57 }
58 if( f )
59 puts( "NONE" );
60 }
61 return 0;
62 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
소스 코드가 포함된 Python 프로젝트텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.