#4654: 請問一下哪裡誤了(C++)


stmharry (橘子皮)

學校 : 精誠中學
編號 : 14661
來源 : [140.112.218.161]
最後登入時間 :
2012-06-26 20:04:05
d563. 等值首尾和 -- 名題精選百則 | From: [125.224.121.168] | 發表日期 : 2010-12-10 22:09

結果:

本題目共 2 個測試點,您的程式共通過 1 個測試點。(score:50)

獲得部分分數 50 分。

錯誤訊息如下:

 

*** 第 1 點 (50%):AC (4ms, 744KB)

 

*** 第 2 點 (50%):WA (line:1)

您的答案為: 1887

正確答案為: 20156 

 

程式碼:

 #include <iostream>

using namespace std;

 

int input();

 

int input(){

    int Var;

    char Char;

    

    while(Char=getchar()) if(Char!=' '&&Char!='\n') break;

    Var=Char;

    

    while(Char=getchar()){

                          if(Char==' '||Char=='\n') break;

                          Var=Var*10+Char-48;

    }

    return Var;

}

 

int main(){

    int Nums;

    

    while(scanf("%d", &Nums)==1){

                      int* Buffer=new int[Nums];

                      memset(Buffer, 0, Nums<<2);

                      int LeftIndex=0, RightIndex=Nums-1, EQ=0;

                      

                      for(int a=0; a<Nums; ++a) Buffer[a]=input();

                      int SumLeft=Buffer[0], SumRight=Buffer[Nums-1];

                      

                      while(LeftIndex<Nums && RightIndex>=0){

                                           while(SumLeft>SumRight){ --RightIndex; SumRight+=Buffer[RightIndex]; }

                                           while(SumLeft<SumRight){ ++LeftIndex; SumLeft+=Buffer[LeftIndex]; }

                                           if(SumLeft==SumRight){

                                                                 ++EQ;

                                                                 ++LeftIndex;

                                                                 --RightIndex;

                                                                 SumLeft+=Buffer[LeftIndex];

                                                                 SumRight+=Buffer[RightIndex];

                                           }

                      }

                      printf("%d\n", EQ);

    }

    return 0;

}


 
#7211: Re:請問一下哪裡誤了(C++)


spotlight0928 (Louis XIV)

學校 : 真理大學
編號 : 17669
來源 : [125.227.153.230]
最後登入時間 :
2019-01-07 14:04:15
d563. 等值首尾和 -- 名題精選百則 | From: [140.131.152.104] | 發表日期 : 2012-11-19 23:03

結果:

本題目共 2 個測試點,您的程式共通過 1 個測試點。(score:50)

獲得部分分數 50 分。

錯誤訊息如下:

 

*** 第 1 點 (50%):AC (4ms, 744KB)

 

*** 第 2 點 (50%):WA (line:1)

您的答案為: 1887

正確答案為: 20156 

 

程式碼:

 #include

using namespace std;

 

int input();

 

int input(){

    int Var;

    char Char;

 

    while(Char=getchar()) if(Char!=' '&&Char!='\n') break;

    Var=Char;

 

    while(Char=getchar()){

                          if(Char==' '||Char=='\n') break;

                          Var=Var*10+Char-48;

    }

    return Var;

}

 

int main(){

    int Nums;

 

    while(scanf("%d", &Nums)==1){

                      int* Buffer=new int[Nums];

                      memset(Buffer, 0, Nums<<2);

                      int LeftIndex=0, RightIndex=Nums-1, EQ=0;

 

                      for(int a=0; a

                      int SumLeft=Buffer[0], SumRight=Buffer[Nums-1];

 

                      while(LeftIndex=0){

                                           while(SumLeft>SumRight){ --RightIndex; SumRight+=Buffer[RightIndex]; }

                                           while(SumLeft

                                           if(SumLeft==SumRight){

                                                                 ++EQ;

                                                                 ++LeftIndex;

                                                                 --RightIndex;

                                                                 SumLeft+=Buffer[LeftIndex];

                                                                 SumRight+=Buffer[RightIndex];

                                           }

                      }

                      printf("%d\n", EQ);

    }

    return 0;

}

 
 
前後個數不一定要一樣!

 
ZeroJudge Forum