13 条题解
-
0xxxxxxxxyu LV 8 @ 2015-10-05 19:48:58
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<queue>
#include<vector>
#include<cmath>
using namespace std;
const int yu[]={2,3,5,7};
const int hu[]={1,3,7,9};
int pan(int x)
{
for(int i=2;i<=sqrt(x);i++)
{
if(x%i==0)return 0;
}
return 1;
}
int main()
{
int n;
cin>>n;
if(n==1)
{
for(int i=0;i<4;i++)
{
cout<<yu[i]<<"\n";
}
}
if(n==2)
{
for(int i=0;i<4;i++)
{
for(int k=0;k<4;k++)
{
int m=yu[i]*10+hu[k];
if(pan(m))cout<<m<<"\n";
}
}}
if(n==3)
{
for(int i=0;i<4;i++)
for(int k=0;k<4;k++)
for(int j=0;j<4;j++)
{
int m=yu[i]*100+hu[k]*10+hu[j];
int op=yu[i]*10+hu[k];
if(pan(m)&&pan(op))cout<<m<<"\n";
}
}
if(n==4)
{for(int i=0;i<4;i++)
for(int k=0;k<4;k++)
for(int j=0;j<4;j++)
for(int o=0;o<4;o++)
{int op=yu[i]*10+hu[k];
int opp=yu[i]*100+hu[k]*10+hu[j]*1;
int m=yu[i]*1000+hu[k]*100+hu[j]*10+hu[o];
if(pan(op)&&pan(opp)&&pan(m))cout<<m<<"\n";
}
}
if(n==5)
{for(int i=0;i<4;i++)
for(int k=0;k<4;k++)
for(int j=0;j<4;j++)
for(int o=0;o<4;o++)
for(int u=0;u<4;u++)
{
int op=yu[i]*10+hu[k];
int opp=yu[i]*100+hu[k]*10+hu[j]*1;
int oppp=yu[i]*1000+hu[k]*100+hu[j]*10+hu[o];
int m=yu[i]*10000+hu[k]*1000+hu[j]*100+hu[o]*10+hu[u];
if(pan(op)&&pan(opp)&&pan(oppp)&&pan(m))cout<<m<<"\n";
}}
if(n==6)
{
for(int i=0;i<4;i++)
for(int k=0;k<4;k++)
for(int j=0;j<4;j++)
for(int o=0;o<4;o++)
for(int u=0;u<4;u++)
for(int p=0;p<4;p++)
{ int op=yu[i]*10+hu[k];
int opp=yu[i]*100+hu[k]*10+hu[j]*1;
int oppp=yu[i]*1000+hu[k]*100+hu[j]*10+hu[o];
int opppp=yu[i]*10000+hu[k]*1000+hu[j]*100+hu[o]*10+hu[u];
int m=yu[i]*100000+hu[k]*10000+hu[j]*1000+hu[o]*100+hu[u]*10+hu[p];
if(pan(op)&&pan(opp)&&pan(oppp)&&pan(opppp)&&pan(m))cout<<m<<"\n";
}
}
if(n==7)
{
for(int i=0;i<4;i++)
for(int k=0;k<4;k++)
for(int j=0;j<4;j++)
for(int o=0;o<4;o++)
for(int u=0;u<4;u++)
for(int p=0;p<4;p++)
for(int r=0;r<4;r++)
{int op=yu[i]*10+hu[k];
int opp=yu[i]*100+hu[k]*10+hu[j]*1;
int oppp=yu[i]*1000+hu[k]*100+hu[j]*10+hu[o];
int opppp=yu[i]*10000+hu[k]*1000+hu[j]*100+hu[o]*10+hu[u];
int oppppp=yu[i]*100000+hu[k]*10000+hu[j]*1000+hu[o]*100+hu[u]*10+hu[p];
int m=yu[i]*1000000+hu[k]*100000+hu[j]*10000+hu[o]*1000+hu[u]*100+hu[p]*10+hu[r];
if(pan(op)&&pan(opp)&&pan(oppp)&&pan(opppp)&&pan(oppppp)&&pan(m))cout<<m<<"\n";
}
}
if(n==8)
{
for(int i=0;i<4;i++)
for(int k=0;k<4;k++)
for(int j=0;j<4;j++)
for(int o=0;o<4;o++)
for(int u=0;u<4;u++)
for(int p=0;p<4;p++)
for(int r=0;r<4;r++)
for(int t=0;t<4;t++)
{int op=yu[i]*10+hu[k];
int opp=yu[i]*100+hu[k]*10+hu[j]*1;
int oppp=yu[i]*1000+hu[k]*100+hu[j]*10+hu[o];
int opppp=yu[i]*10000+hu[k]*1000+hu[j]*100+hu[o]*10+hu[u];
int oppppp=yu[i]*100000+hu[k]*10000+hu[j]*1000+hu[o]*100+hu[u]*10+hu[p];
int opppppp=yu[i]*1000000+hu[k]*100000+hu[j]*10000+hu[o]*1000+hu[u]*100+hu[p]*10+hu[r];
int m=yu[i]*10000000+hu[k]*1000000+hu[j]*100000+hu[o]*10000+hu[u]*1000+hu[p]*100+hu[r]*10+hu[t];
if(pan(op)&&pan(opp)&&pan(oppp)&&pan(opppp)&&pan(oppppp)&&pan(opppppp)&&pan(m))cout<<m<<"\n";
}
}
return 0;
} -
02009-10-05 14:25:34@
人到了某个水平后就让人觉得是神了
orz楼上的牛! -
02009-07-16 22:01:41@
看了楼下的程序,想了半天终于知道枚举什么东西了……
Orz ......
看到没人给这题写个正经的题解,那么我就写了一个:点我看题解 -
02009-07-13 21:58:44@
PKU1232是什么?
-
02009-07-13 16:51:57@
果然枚举。。。
挺有意思的题目,注意 0 和 1 是不完全相同的。 -
02009-07-19 17:45:10@
看来我在比赛的时候的想法和正确答案只有一步之遥.
囧的是无解的时候我的程序会输出两次 noway -
02009-07-12 23:26:02@
枚举
AC -
02009-07-12 22:23:05@
占层 枚举过了·········
-
02009-07-12 21:40:54@
这题我蒙的
-
02009-07-02 12:52:57@
Oh,My God
-
02009-07-13 12:24:24@
沙茶枚举题
PKU1232有更详细的描述 -
02009-07-01 20:27:44@
这是比赛的第三题,
-
-12009-10-20 20:58:56@
Accepted 有效得分:100 有效耗时:0ms
诧异了,=了好久,终于=到sunny了 T^T
位运算+记忆化搜索.....感谢《数据结构与算法设计》...
- 1