PRIMPERM - Prime Permutations
如果用暴力筛因子的方法,在
对于每一个 next_permutation
,用法:next_permutaion(数组名+起始地址,数组名+末尾地址+1)
,注意使用之前要对数组进行升序排序),之后判断组成的数字是否为素数即可。
代码如下:
main()
{
init(MAXN); //筛素数
read(t);
for(; t; -- t)
{
read(n);
int cnt = 0, res = 0;
for(;n;)
{
a[++ cnt] = n % 10; //转换成序列
n /= 10;
}
sort(a + 1, a + cnt + 1); // 排序
do{
if(!a[1]) continue; // 全排列的第一个数字不能是 0
n = 0;
rep(i, 1, cnt) n = n * 10 + a[i]; // 将全排列转化成数字
res += !f[n];
}while(next_permutation(a + 1, a + cnt + 1));
write(res, '\n');
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步