讨论 / 200题 奥运火炬到福州 为什么我得了80分
liruyuan 2010-07-28 02:53:00
点我顶贴 收藏 删除
第五个点没过 请高手讲下原因哈

测试结果错误.错误结果为:can’t

正确结果应为:can

以下是我的程序

program zz;

var

a,b:array[1..20000]of longint;

n1,m1,i,j,m,n,s,t:longint;

n2,m2,n3,m3,n4,m4:real;

begin

read(n,m);

for i:=1to n do

begin

read(a[i]);

n1:=n1+a[i];

end;

for i:=1to m do

begin

read(b[i]);

m1:=m1+b[i];

end;

if m>n then begin writeln('can',chr(39),'t'); exit; end;

if m=0 then begin write('can'); exit; end;

if n=0 then begin write('can',chr(39),'t'); exit; end;

n2:=n1/n; m2:=m1/m;

if m2>n2 then begin write('can',chr(39),'t'); exit; end;

for i:=1to n do

n3:=n3+sqr(a[i]-n2);

for i:=1to m do

m3:=m3+sqr(b[i]-m2);

n4:=n3/n;

m4:=m3/m;

if (n>m)and(n2>m2)and(n4<m4) then writeln('can')

else writeln('can',chr(39),'t');

readln(s);

end.

谢谢您的帮助

#1 Mine_ysd@2010-07-28 02:53:00
回复 删除
懒得校对了,直接贴一个:

/*

题目描述

5月11日,在福州人民的热烈欢迎下,象征着和平、友谊、圣洁的奥运火炬终于来到了福州,开始了传递……

这次传递中也伴有不和谐的音符,达赖集团的极少数藏独分子想要在途中破坏奥运圣火,圣火护卫队的队员们也要尽自己最大努力去保卫圣火不受侵犯。(我出这道题,也算为奥运出了自己的一份微薄之力了)

数据范围:n+m≤18511,体力都在longint范围内(可能是负数)

输入格式

输入:

第1行,两个整数n和m,分别代表圣火护卫队的人数及藏独分子的人数;

接下来n行,每行一个数代表圣火护卫队每个人的体力;

接下来m行,每行一个数代表每个藏独分子的体力。

输出格式

输出:

输出圣火护卫队是否能保护圣火,能输出can,不能输出can't。所谓是否能保护圣火,指的是圣火护卫队队员的人数多;且圣火护卫队队员的体力平均数高;且圣火护卫队队员的体力的方差小(三项都满足)

样例输入

3 2

18 18 18

1 2

样例输出

can

*/

#include <iostream>

using namespace std;

int main()

{

long i,n,m,sa=0,sb=0,s1a=0,s1b=0,a[18600],b[18600];

cin>>n>>m;

if (m==0&&n!=0)

{

cout<<"can";exit(0);

}

else

if (n==0&&m!=0)

{

cout<<"can't";exit(0);

} else if (m==0)

{ cout<<"can";exit(0);}

for (i=1;i<=n;i++)

{cin>>a[i];sa+=a[i];}

for (i=1;i<=m;i++)

{cin>>b[i];sb+=b[i];}

sa/=n;sb/=m;

for (i=1;i<=n;i++) s1a+=(a[i]-sa)*(a[i]-sa);

for (i=1;i<=m;i++) s1b+=(b[i]-sb)*(b[i]-sb);

s1a/=n;s1b/=m;

if (n>m&&sa>sb&&s1a>=s1b) cout<<"can";

else cout<<"can't";

return 0;

}

查看更多回复
提交回复