这是我们学校本届的校赛题目,链接:http://218.75.208.59:8084/acmhome/problemdetail.do?&method=showdetail&id=1060
题目描述:
我素故我在
时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte
总提交:20 测试通过:11
总提交:20 测试通过:11
描述
有这样一种素数叫纯素数(YY出来的名字),当它是一个多位数的时候,你把它的末位去掉之后余下的数依然是一个素数。比如说2393,2393 本身是一个素数,它的末位去掉之后,余下的是239。239 是一个素数,它的末位去掉之后,余下的是23 。23是一个素数,它的末位去掉之后,余下的是2 。2依然还是一个素数。纯素数的长度叫做“维”。2393 是一个4维素数。3797也是一个4维素数。
输入
第一行先给出一共有多少组数据N(N<=1000),接下来有N组数据.
每组包括一个整数T(1<=T<=8)。
输出
按照从小到大的顺序输出所有的T维纯素数。
样例输入
1
1
样例输出
2
3
5
7
这题我其实在比赛的时候打表打出来了,但是比较悲剧,看题目不仔细,每次只要输出n维的素数,而我每次把从1到n维的全部输出来了,所以一直wa啊。一直不能水,最终七题收尾。下面贴代码吧。
#include<stdio.h>
#include<math.h>
int num[84] = {2,3,5,7,23,29,31,37,53,59,71,73,79,233,239,293,311,313,317,373,379,593,599,719,733,739,797,2333,2339,2393,2399,2939,3119,3137,3733,3739,3793,3797,5939,7193,7331,7333,7393,23333,23339,23399,23993,29399,31193,31379,37337,37339,37397,59393,59399,71933,73331,73939,233993,239933,293999,373379,373393,593933,593993,719333,739391,739393,739397,739399,2339933,2399333,2939999,3733799,5939333,7393913,7393931,7393933,23399339,29399999,37337999,59393339,73939133};
int c = 83;
/*int pow( int j,int x )
{
int sum = 1;
for( int i = 1; i <= x; ++i )
sum *= j;
return sum;
}*/
int main( )
{
int t,n;
scanf( "%d",&t );
while( t-- )
{
scanf( "%d",&n );
for( int i = 0; i < 83; ++i )
{
if( num[i] > pow( 10,n ) )
break;
if( num[i] > pow( 10,n-1 ) )
printf( "%d\n",num[i] );
}
}
return 0;
}