1256: Jesse's Code
Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 5 Solved: 3
[ Submit][ Status][ Web Board]
Description
Jesse是个数学迷,他最喜欢研究“哥德巴赫猜想”,因此他的计算机密码也都采用素数。 但一直用同一个密码是不安全的,所以他要经常更换他的密码。但他只允许自己的密码中出现某些数字,且密码的每一位都不相同。比如1 2 4,则有6种情况124 142 214 241 412 421。其中241 和 421为素数。为了获得他的密码(他的机器上存放了第4届舜禹杯大学生程序设计竞赛的题目!),需要生成一个字典来帮助我们破解。 请你来编写一个程序帮助我们(因为众所周知的原因我们迫切需要获得这些题目)。
Input
- Line 1:密码的位数n (1 ≤ n ≤ 9)。
- Line 2:1->n个不重复的整数序列 (1 ≤ x[i] ≤ 9).
Output
按从小到大顺序输出所有的结果。 如果一个结果也没有,输出“NONE”。 每组数据后面跟随一个空行。
Sample Input
3
1 2 4
0
Sample Output
241
421
HINT
Source
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int isprime(int n)
{
int k=sqrt(n),i;
for (i=2;i<=k;i++)
{
if (n%i==0)
{
return 0;
break;
}
}
return 1;
}
int main()
{
int a[10],n,i,sum;
while (scanf("%d",&n)&&n)
{
for (i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
do
{
sum=0;
for (i=0;i<n;i++)
{
sum=sum*10+a[i];
}
//printf("%d\n",sum);
if (isprime(sum))
{
printf("%d\n",sum);
}
} while (next_permutation(a,a+n));
}
}