3194 - Jesse's Code
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”。 每组数据后面跟随一个空行。
Examples
Input
3 1 2 4 0
Output
241 421
Solution C++
#include <bits/stdc++.h> using namespace std; int n, a[10]; bool isP(int x) { if (x < 2) return false; for (long long i = 2; i * i <= x; i ++) { if (x % i == 0) return false; } return true; } int main() { while (cin >> n && n != 0) { for (int i = 1; i <= n; i ++) cin >> a[i]; sort(a + 1, a + n + 1); bool flag = false; do { int num = 0; for (int i = 1; i <= n; i ++) num = num * 10 + a[i]; if (isP(num)) { cout << num << endl; flag = true; } }while (next_permutation(a + 1, a + 1 + n)); if (!flag) puts("NONE"); } return 0; } /* 19880229不是闰年 */