#6759: NA 想不到還有甚麼bug?


asadman1523 (Jack)

學校 : 大同大學
編號 : 13361
來源 : [59.127.173.63]
最後登入時間 :
2017-02-07 16:09:22
a271. 彩色蘿蔔 -- 兔子 | From: [60.245.65.180] | 發表日期 : 2012-07-10 19:09

我利用getchar() 來排除空格
 
自己測試都是對的,但還是NA阿~ 
 
實在不喜歡這樣子貼出來,要請大家傷眼睛,但這題做了滿久還是無法... 
 
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i,run;
    char c;
    scanf("%d",&run);
    long long int x,y,z,w,n,m;
    for(i=1;i<=run;i++)
    {
        scanf("%lld %lld %lld %lld %lld %lld",&x,&y,&z,&w,&n,&m);
        getchar();//吃掉 '\n'
        z*=-1;  //變瘦先乘以 -1
        w*=-1;
        n*=-1;

        /*計算過程*/
        long long int weight=m;
        long long int dou=0;
        long long int poison=0;

        c=getchar();
        while(c!='\n')
        {
            if(c!=' ')
            {
               if(poison==1)
                    weight+=dou;
               if(weight<=0)
                {
                    printf("bye~Rabbit\n");
                    c==getchar();
                    while(c!='\n')
                    {
                        c=getchar();
                    }
                    break;
                }
                switch(c)
                {
                    case '0':
                    break;
                    case '1':
                        weight+=x;
                    break;
                    case '2':
                        weight+=y;
                    break;
                    case '3':
                        weight+=z;
                    break;
                    case '4':
                        weight+=w;
                        dou+=n;
                        poison=1;
                    break;
                }
            }
            if(weight<=0)break;
            else
                c=getchar();
        }
    if(weight>0)
        printf("%lldg\n",weight);

    }
    return 0;
}

 
#6760: Re:NA 想不到還有甚麼bug?


asadman1523 (Jack)

學校 : 大同大學
編號 : 13361
來源 : [59.127.173.63]
最後登入時間 :
2017-02-07 16:09:22
a271. 彩色蘿蔔 -- 兔子 | From: [60.245.65.180] | 發表日期 : 2012-07-10 20:02

好吧我錯了,我不應該亂用break;

應該要明確到某個步驟跳出  不然都不知道break到哪裡去了 

 

在此附上修改版本供參考 

 

#include <stdio.h>

#include <stdlib.h>

 

void ii()

{

    char c;

    long long int x,y,z,w,n,m;

 

        scanf("%lld %lld %lld %lld %lld %lld",&x,&y,&z,&w,&n,&m);

        getchar();

        z*=-1;

        w*=-1;

        n*=-1;

 

        /*­pºâ¹Lµ{*/

        long long int weight=m;

        long long int dou=0;

        long long int poison=0;

 

 

        while((c=getchar())!='\n')

        {

            if(c>='0' &&c<='9')

            {

               if(poison==1)

                    weight+=dou;

               if(weight<=0)

                {

                    printf("bye~Rabbit\n");

                    while(getchar()!='\n');

                    return;

                }

                switch(c)

                {

                    case '0':

                    break;

                    case '1':

                        weight+=x;

                    break;

                    case '2':

                        weight+=y;

                    break;

                    case '3':

                        weight+=z;

                    break;

                    case '4':

                        weight+=w;

                        dou+=n;

                        poison=1;

                    break;

                }

            }

            if(weight<=0)

            {

                printf("bye~Rabbit\n");

                while(getchar()!='\n');

                return;

            }

        }

    if(weight>0)

        printf("%lldg\n",weight);

    else

    {

        printf("bye~Rabbit\n");

        while(getchar()!='\n');

        return;

    }

 

}

 

int main()

{

    int i,run;

    scanf("%d",&run);

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

    {

        ii();

 

    }

    return 0;

}

 

 
ZeroJudge Forum