#7730: 請高手幫我看看,我輸入範例答案都正確><


longtoday (Vince)

學校 : 不指定學校
編號 : 32521
來源 : [123.193.220.7]
最後登入時間 :
2013-06-12 18:52:16
a059. 完全平方和 | From: [123.193.220.7] | 發表日期 : 2013-05-07 22:21


 以下是程式碼,我輸入範例的輸入,輸出都對,不知道是哪裡錯了!
 
 


#include <iostream>
#include <cstdlib>
#include<math.h>

using namespace std;

int main(){

int n;
int *sum;
int a,b;

while(cin>>n)
{
    sum=new int[n];
    for(int i=0;i<n;i++)              
      {
       cin>>a>>b;       
       int add=0;
         {
             for(int j=a;j<=b;j++)
                      {
                           double s=sqrt(j);
                           if(s*s==(double)j)
                           {
                           add+=j;
                           }
                      }
                      sum[i]=add;
           }
  
        }   
         for(int i=0;i<n;i++)
                 {
                 cout<<"Case "<<i+1<<": "<<sum[i]<<endl;
                 }
         
         }
 }
 
 
#7731: Re:請高手幫我看看,我輸入範例答案都正確><


akira0331 (小迷糊)

學校 : 不指定學校
編號 : 26613
來源 : [203.70.194.240]
最後登入時間 :
2013-07-29 09:30:29
a059. 完全平方和 | From: [203.70.194.240] | 發表日期 : 2013-05-08 13:57


 以下是程式碼,我輸入範例的輸入,輸出都對,不知道是哪裡錯了!
 
 


#include
#include
#include

using namespace std;

int main(){

int n;
int *sum;
int a,b;

while(cin>>n)
{
    sum=new int[n];
    for(int i=0;i
      {
       cin>>a>>b;       
       int add=0;
         {
             for(int j=a;j<=b;j++)
                      {
                           double s=sqrt(j);
                           if(s*s==(double)j)
                           {
                           add+=j;
                           }
                      }
                      sum[i]=add;
           }
  
        }   
         for(int i=0;i
                 {
                 cout<<"Case "<
                 }
         
         }
 }
 

你把s定義成 int 試看看, 有可能因為定義為 double, s*s又變回 j  
定義成 int 只有在 j 開根號的值剛是整數時才會相等
 
ZeroJudge Forum