#18339: 奇怪了!為什麼我的答案跟正確答案一樣,但是錯了??


fxxx0981940138@gmail.com (夾腳拖)

學校 : 不指定學校
編號 : 82471
來源 : [101.12.70.161]
最後登入時間 :
2020-08-03 15:37:03
a013. 羅馬數字 -- NPSC 模擬試題 | From: [101.12.24.41] | 發表日期 : 2019-07-05 12:20

#include <stdio.h>
#include <string.h>

int main() {
    int romea,romeb,lena,lenb;
    int answer,j=0;
    int N[7]={1,5,10,50,100,500,1000},romen[7];
    char a[100],b[100];
    char rome[8]="IVXLCDM";

    while(scanf("%s",a) && a[0]!='#') {
        scanf("%s",b);
        lena=strlen(a);
        lenb=strlen(b);
        romea=0;
        romeb=0;

        for(int i=0;i<7;i++) {
            for(j=0;j<lena;j++) {
                if(rome[i]==a[j])
                    romea+=N[i];
            }
            for(j=0;j<lenb;j++) {
                if(rome[i]==b[j])
                    romeb+=N[i];
            }
        }

        answer=romea-romeb;
        if(answer<0)
            answer*=(-1);
        else if(answer==0) {
            printf("ZERO\n");
            continue;
        }

        for(int i=6;i>=0;i--) {
            for(j=0;answer>0;j++) {
                if(answer-N[i]>=0)
                    answer-=N[i];
                else
                    break;
            }
        if(j>3)
            rome[i+1]=0;
            romen[i]=j;
        }

        for(int i=6;i>=0;i--) {
            if(romen[i]>=4) {
                printf("%c%c",rome[i],rome[i+2]);
            }
            else {
                for(j=0;j<romen[i];j++) {
                    printf("%c",rome[i]);
                }
            }
        }
        printf("\n");
    }

    return 0;
}

 
ZeroJudge Forum