#36249: 求救!卡在line7


johnjoelook@gmail.com (羅向恩)

學校 : 不指定學校
編號 : 157263
來源 : [116.241.217.15]
最後登入時間 :
2023-07-15 11:41:32
a013. 羅馬數字 -- NPSC 模擬試題 | From: [27.52.124.88] | 發表日期 : 2023-07-12 12:30

您的答案為: MMDCCXVII

正確答案為: MCMXCVII

------以下為我的程式碼------

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <stdbool.h>

 

char IN[100][2][100];

int Num[100][2];

int D[100];

int i=0,k,t;

bool TF=false;

 

int main()

{

    while(1) {

        scanf("%s",IN[i][0]);

        if(IN[i][0][0]=='#') {

            break;

        }

        scanf("%s",IN[i][1]);

        i++;

    }

 

    for(int j=0; j<i; j++) {

        k=0;

        while(IN[j][TF][k]=='M'){

            Num[j][TF] +=1000;

            k++;

        } 

        if(IN[j][TF][k] == 'D'){

            Num[j][TF] +=500;

            k++;

        }

        while(IN[j][TF][k] == 'C'){

            Num[j][TF] +=100;

            k++;

            if(IN[j][TF][k] == 'D'){

                Num[j][TF] +=300;

                k++;

                break;

            }

            if(IN[j][TF][k] == 'M'){

                Num[j][TF] +=800;

                k++;

                break;

            }

        }

        if(IN[j][TF][k] == 'L'){

            Num[j][TF] +=50;

            k++;

        }

        while(IN[j][TF][k] == 'X'){

            Num[j][TF] +=10;

            k++;

            if(IN[j][TF][k] == 'L'){

                Num[j][TF] +=300;

                k++;

                break;

            }

            if(IN[j][TF][k] == 'C'){

                Num[j][TF] +=800;

                k++;

                break;

            }

        }

        if(IN[j][TF][k] == 'V'){

            Num[j][TF] +=5;

            k++;

        }

        while(IN[j][TF][k] == 'I'){

            Num[j][TF] +=1;

            k++;

            if(IN[j][TF][k] == 'V'){

                Num[j][TF] +=3;

                k++;

                break;

            }

            if(IN[j][TF][k] == 'X'){

                Num[j][TF] +=8;

                k++;

                break;

            }

        }

        TF = !TF;

        if(TF == true) j--;

    }

    /*

    for(int j=0;j<i;j++){

        printf("%d,%d\n",Num[j][0],Num[j][1]);

    }

    */

    for(int j=0; j<i; j++) {

        D[j] = abs(Num[j][0]-Num[j][1]);

    }

 

    for(int j=0; j<i; j++) {

        if(D[j] == 0) printf("ZERO");

        if(D[j]>=1000) {

            t = D[j]/1000;

            D[j] = D[j]%1000;

            for(int x=0; x<t; x++) printf("M");

        }

        if(D[j]>=100) {

            t = D[j]/100;

            D[j] = D[j]%100;

            if(t<4) {

                for(int x=0; x<t; x++) printf("C");

            }

            else if(t==4) printf("CD");

            else if(t<9) {

                printf("D");

                for(int x=0; x<t-5; x++) printf("C");

            }

            else printf("CM");

        }

        if(D[j]>=10) {

            t = D[j]/10;

            D[j] = D[j]%10;

            if(t<4) {

                for(int x=0; x<t; x++) printf("X");

            }

            else if(t==4) printf("XL");

            else if(t<9) {

                printf("L");

                for(int x=0; x<t-5; x++) printf("X");

            }

            else printf("XC");

        }

        if(D[j]<4) {

            for(int x=0; x<D[j]; x++) printf("I");

        }

        else if(D[j]==4) printf("IV");

        else if(D[j]<9) {

            printf("V");

            for(int x=0; x<D[j]-5; x++) printf("I");

        }

        else printf("IX");

        printf("\n");

    }

    return 0;

}

 
#36262: Re: 求救!卡在line7


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
a013. 羅馬數字 -- NPSC 模擬試題 | From: [59.115.7.3] | 發表日期 : 2023-07-12 21:49

您的答案為: MMDCCXVII

正確答案為: MCMXCVII

------以下為我的程式碼------

#include

#include

#include

#include

 

char IN[100][2][100];

int Num[100][2];

int D[100];

int i=0,k,t;

bool TF=false;

 

int main()

{

    while(1) {

        scanf("%s",IN[i][0]);

        if(IN[i][0][0]=='#') {

            break;

        }

        scanf("%s",IN[i][1]);

        i++;

    }

 

    for(int j=0; j

        k=0;

        while(IN[j][TF][k]=='M'){

            Num[j][TF] +=1000;

            k++;

        } 

        if(IN[j][TF][k] == 'D'){

            Num[j][TF] +=500;

            k++;

        }

        while(IN[j][TF][k] == 'C'){

            Num[j][TF] +=100;

            k++;

            if(IN[j][TF][k] == 'D'){

                Num[j][TF] +=300;

                k++;

                break;

            }

            if(IN[j][TF][k] == 'M'){

                Num[j][TF] +=800;

                k++;

                break;

            }

        }

        if(IN[j][TF][k] == 'L'){

            Num[j][TF] +=50;

            k++;

        }

        while(IN[j][TF][k] == 'X'){

            Num[j][TF] +=10;

            k++;

            if(IN[j][TF][k] == 'L'){

                Num[j][TF] +=300;

                k++;

                break;

            }

            if(IN[j][TF][k] == 'C'){

                Num[j][TF] +=800;

                k++;

                break;

            }

        }

        if(IN[j][TF][k] == 'V'){

            Num[j][TF] +=5;

            k++;

        }

        while(IN[j][TF][k] == 'I'){

            Num[j][TF] +=1;

            k++;

            if(IN[j][TF][k] == 'V'){

                Num[j][TF] +=3;

                k++;

                break;

            }

            if(IN[j][TF][k] == 'X'){

                Num[j][TF] +=8;

                k++;

                break;

            }

        }

        TF = !TF;

        if(TF == true) j--;

    }

    /*

    for(int j=0;j

        printf("%d,%d\n",Num[j][0],Num[j][1]);

    }

    */

    for(int j=0; j

        D[j] = abs(Num[j][0]-Num[j][1]);

    }

 

    for(int j=0; j

        if(D[j] == 0) printf("ZERO");

        if(D[j]>=1000) {

            t = D[j]/1000;

            D[j] = D[j]%1000;

            for(int x=0; x

        }

        if(D[j]>=100) {

            t = D[j]/100;

            D[j] = D[j]%100;

            if(t<4) {

                for(int x=0; x

            }

            else if(t==4) printf("CD");

            else if(t<9) {

                printf("D");

                for(int x=0; x

            }

            else printf("CM");

        }

        if(D[j]>=10) {

            t = D[j]/10;

            D[j] = D[j]%10;

            if(t<4) {

                for(int x=0; x

            }

            else if(t==4) printf("XL");

            else if(t<9) {

                printf("L");

                for(int x=0; x

            }

            else printf("XC");

        }

        if(D[j]<4) {

            for(int x=0; x

        }

        else if(D[j]==4) printf("IV");

        else if(D[j]<9) {

            printf("V");

            for(int x=0; x

        }

        else printf("IX");

        printf("\n");

    }

    return 0;

}


我怕被質疑貼程式碼,所以傳私人訊息給你了

 
#36290: Re: 求救!卡在line7


johnjoelook@gmail.com (羅向恩)

學校 : 不指定學校
編號 : 157263
來源 : [116.241.217.15]
最後登入時間 :
2023-07-15 11:41:32
a013. 羅馬數字 -- NPSC 模擬試題 | From: [116.241.217.15] | 發表日期 : 2023-07-13 15:55

您的答案為: MMDCCXVII

正確答案為: MCMXCVII

------以下為我的程式碼------

#include

#include

#include

#include

 

char IN[100][2][100];

int Num[100][2];

int D[100];

int i=0,k,t;

bool TF=false;

 

int main()

{

    while(1) {

        scanf("%s",IN[i][0]);

        if(IN[i][0][0]=='#') {

            break;

        }

        scanf("%s",IN[i][1]);

        i++;

    }

 

    for(int j=0; j

        k=0;

        while(IN[j][TF][k]=='M'){

            Num[j][TF] +=1000;

            k++;

        } 

        if(IN[j][TF][k] == 'D'){

            Num[j][TF] +=500;

            k++;

        }

        while(IN[j][TF][k] == 'C'){

            Num[j][TF] +=100;

            k++;

            if(IN[j][TF][k] == 'D'){

                Num[j][TF] +=300;

                k++;

                break;

            }

            if(IN[j][TF][k] == 'M'){

                Num[j][TF] +=800;

                k++;

                break;

            }

        }

        if(IN[j][TF][k] == 'L'){

            Num[j][TF] +=50;

            k++;

        }

        while(IN[j][TF][k] == 'X'){

            Num[j][TF] +=10;

            k++;

            if(IN[j][TF][k] == 'L'){

                Num[j][TF] +=300;

                k++;

                break;

            }

            if(IN[j][TF][k] == 'C'){

                Num[j][TF] +=800;

                k++;

                break;

            }

        }

        if(IN[j][TF][k] == 'V'){

            Num[j][TF] +=5;

            k++;

        }

        while(IN[j][TF][k] == 'I'){

            Num[j][TF] +=1;

            k++;

            if(IN[j][TF][k] == 'V'){

                Num[j][TF] +=3;

                k++;

                break;

            }

            if(IN[j][TF][k] == 'X'){

                Num[j][TF] +=8;

                k++;

                break;

            }

        }

        TF = !TF;

        if(TF == true) j--;

    }

    /*

    for(int j=0;j

        printf("%d,%d\n",Num[j][0],Num[j][1]);

    }

    */

    for(int j=0; j

        D[j] = abs(Num[j][0]-Num[j][1]);

    }

 

    for(int j=0; j

        if(D[j] == 0) printf("ZERO");

        if(D[j]>=1000) {

            t = D[j]/1000;

            D[j] = D[j]%1000;

            for(int x=0; x

        }

        if(D[j]>=100) {

            t = D[j]/100;

            D[j] = D[j]%100;

            if(t<4) {

                for(int x=0; x

            }

            else if(t==4) printf("CD");

            else if(t<9) {

                printf("D");

                for(int x=0; x

            }

            else printf("CM");

        }

        if(D[j]>=10) {

            t = D[j]/10;

            D[j] = D[j]%10;

            if(t<4) {

                for(int x=0; x

            }

            else if(t==4) printf("XL");

            else if(t<9) {

                printf("L");

                for(int x=0; x

            }

            else printf("XC");

        }

        if(D[j]<4) {

            for(int x=0; x

        }

        else if(D[j]==4) printf("IV");

        else if(D[j]<9) {

            printf("V");

            for(int x=0; x

        }

        else printf("IX");

        printf("\n");

    }

    return 0;

}


我怕被質疑貼程式碼,所以傳私人訊息給你了

感謝 沒想到是卡在最後這個細節

 
ZeroJudge Forum