#6559: c語言 WA


dennis92107 (已經消滅敵隊~)


#include<stdio.h>
#include<math.h>
int main()
{
 int a,b,c,d,c1,d1,e,x[1000],max=0;
 while(scanf("%d",&a)!=EOF)
 {
  for(b=0;b<a;b++)
  {
  scanf("%d%d",&c,&d);
    if(sqrt(c)*sqrt(c)<=c)
    {
  c1=sqrt(c);
  }
  if(sqrt(c)*sqrt(c)>c)
  {
  c1=sqrt(c)+1;
  }
  d1=sqrt(d);
   for(e=c1;e<=d1;e++)
   {
  x[0]=0;
  x[e]=e*e;
  max+=x[e];
   }
   printf("Case %d: %d\n",b+1,max);
   max=0;
}
}
return 0;
}
WA (line:2)
答案不正確
您的答案為: Case 2: 54 正確答案為: Case 2: 50 
我抓了所有的可能 ...都執行成功 
請高手解答
#6568: Re:c語言 WA


linishan (L)



sqrt是浮點數

容易有浮點數誤差

盡量少用

這題還有很多不同的解法 

#7195: Re:c語言 WA


spocktsai (囧rz)


建議你可以使用數學上的 ceil 還有 floor 兩個函數

例如計算範圍是 a 到 b

可能的完全平方數範圍就是 ceil(sqrt(a)) 到 floor(sqrt(b)) 之間