讨论 / 大牛帮我看一下
狼123 2008-10-27 08:24:00
点我顶贴 收藏 删除
状态: Unaccepted

测评机: Xeond[6]

得分: 80分

提交日期: 2008-10-27 22:22:00

有效耗时: 532毫秒

测试结果1: 通过本测试点|有效耗时156:ms

测试结果2: 测试结果错误.错误结果为:12

正确结果应为:13

测试结果3: 通过本测试点|有效耗时47:ms

测试结果4: 通过本测试点|有效耗时47:ms

测试结果5: 通过本测试点|有效耗时63:ms

测试结果6: 通过本测试点|有效耗时63:ms

测试结果7: 测试结果错误.错误结果为:12

正确结果应为:13

测试结果8: 通过本测试点|有效耗时62:ms

测试结果9: 通过本测试点|有效耗时47:ms

测试结果10: 通过本测试点|有效耗时47:ms

program Digital;

var

i,n,m,h,f,k,j:longint;

a:array[0..20000] of longint;

function su(a:longint):boolean;

var

t:longint;

begin

if a=2 then exit(true)

else if a mod 2=0 then exit(false);

t:=3;

while t<=trunc(sqrt(a)) do

begin

if a mod t=0 then exit(false);

inc(t,2);

end;

exit(true);

end;

procedure work(i,x,sum:longint);

var

j:longint;

begin

if (x=m) then

begin

if su(sum) then inc(f);

end

else

for j:=i to n do

work(j+1,x+1,sum+a[i])

end;

begin

read(n,m);

for i:=1 to n do

read(a[i]);

work(1,0,0);

write(f);

readln;

readln;

end.

这是怎么回事呀??

#1 飞雪天涯@2008-10-27 08:24:00
回复 删除
懒得看程序,发一个:(C++)

#include<fstream>

#include<iostream>

#define MAXN 20

using namespace std;

#define fin cin

#define fout cout

//ifstream fin ("NOIPC2.in");

//ofstream fout ("NOIPC2.out");

bool isprime(int k)

{

if (k<=1) return false;

if (k==2) return true;

if (k%2==0) return false;

for (int i=2;i*i<=k;i++)

if (k%i==0) return false;

return true;

}

int n,k,t=0;

int a[MAXN],visited[MAXN];

void dfs_try(int i,int cut,int amount){

if (i==k){

if (isprime(amount)) t++;

return ;

}

for (int j=cut+1;j<n-k+i+1;j++)

if (!visited[j]){

visited[j]=1;

dfs_try(i+1,j,amount+a[j]);

visited[j]=0;

}

}

int main (void)

{

fin>>n>>k;

for (int i=0;i<n;i++)

fin>>a[i],visited[i]=0;

dfs_try(0,-1,0);

fout<<t<<endl;

return 0;

}

查看更多回复
提交回复