1343. Fairy Tale

1343

想了好一会 以为会有什么定理呢 没想到 就试着搜了 看来素数还是很多的 跑的飞快

注意会有前导0的情况 还有0,1不是素数。。。

 1 #include <iostream>

 2 #include<cstdio>

 3 #include<cstring>

 4 #include<algorithm>

 5 #include<stdlib.h>

 6 #include<vector>

 7 #include<queue>

 8 #include<cmath>

 9 using namespace std;

10 #define LL long long

11 int flag;

12 char a[20];

13 LL p[20];

14 int judge(LL x)

15 {

16     if(x<2)return 0;

17     int i,o = sqrt(x*1.0);

18     for(i = 2; i <= o+1 ; i++)

19     if(x%i==0)

20     return 0;

21     return 1;

22 }

23 void dfs(int x,LL s,int pa[])

24 {

25     if(flag) return ;

26     int i;

27     if(x>12)

28     {

29         if(judge(s))

30         {

31             for(i = 1 ; i <= 12 ; i++)

32             cout<<pa[i];

33             puts("");

34             flag = 1;

35         }

36         return ;

37     }

38     for(i = 0; i <= 9 ; i++)

39     {

40         s+=p[12-x]*i;

41         pa[x] = i;

42         dfs(x+1,s,pa);

43         s-=p[12-x]*i;

44     }

45 }

46 int main()

47 {

48     int i,n;

49     int pa[20];

50     LL s=0;

51     cin>>n;

52     p[0] = 1;

53     for(i = 1; i <= 12 ; i++)

54     p[i] = p[i-1]*10;

55     for(i = 1 ; i <= n ; i++)

56     {

57         cin>>a[i];

58         pa[i] = a[i]-'0';

59         s+=(a[i]-'0')*p[12-i];

60     }

61     if(n==12)

62     {

63         printf("%lld\n",s);

64         return 0;

65     }

66     dfs(n+1,s,pa);

67     return 0;

68 }
View Code

 

你可能感兴趣的:(AIR)