#12213: 測資14過不了


Guava (Guava)

學校 : 高雄市立高雄女子高級中學
編號 : 66716
來源 : [115.165.197.64]
最後登入時間 :
2017-07-24 19:39:26
a013. 羅馬數字 -- NPSC 模擬試題 | From: [49.158.224.77] | 發表日期 : 2017-06-15 17:55

#include <iostream>
using namespace std;

int main()
{
  string rome1, rome2;
  while(cin >> rome1){
    if(rome1=="#")
      break;
    cin >> rome2;
    int add1=0, add2=0;
    for(int i=0; i<rome1.length(); i++){
      switch (rome1[i]){
        case 'I':
          add1++;
          break;
        case 'V':
          if(rome1[i]=='I')
            add1-=2;
          add1+=5;
          break;
        case 'X':
          if(rome1[i]=='I')
            add1-=2;
          add1+=10;
          break;
        case 'L':
          if(rome1[i-1]=='X')
            add1-=20;
          add1+=50;
          break;
        case 'C':
          if(rome1[i-1]=='X')
            add1-=20;
          add1+=100;
          break;
        case 'D':
          if(rome1[i-1]=='C')
            add1-=200;
          add1+=500;
          break;
        case 'M':
          if(rome1[i-1]=='C')
            add1-=200;
          add1+=1000;
          break;
      }
    }
    for(int i=0; i<rome2.length(); i++){
      switch (rome2[i]){
        case 'I':
          add2++;
          break;
        case 'V':
          if(rome2[i-1]=='I')
            add2-=2;
          add2+=5;
          break;
        case 'X':
          if(rome2[i-1]=='I')
            add2-=2;
          add2+=10;
          break;
        case 'L':
          if(rome2[i-1]=='X')
            add2-=20;
          add2+=50;
          break;
        case 'C':
          if(rome2[i-1]=='X')
            add2-=20;
          add2+=100;
          break;
        case 'D':
          if(rome2[i-1]=='C')
            add2-=200;
          add2+=500;
          break;
        case 'M':
          if(rome2[i-1]=='C')
            add2-=200;
          add2+=1000;
          break;
      }
    }
    if(add2>add1)
      add1=add2-add1;
    else if(add2<add1)
      add1=add1-add2;
    else{
      add1=0;
      cout << "ZERO";
    }
    while(add1!=0){
      if(add1>=1000){
        cout << "M";
        add1-=1000;
      }
      else if(add1>=900){
        cout << "CM";
        add1-=900;
      }
      else if(add1>=500){
        cout << "D";
        add1-=500;
      }
      else if(add1>=490){
        cout << "XD";
        add1-=490;
      }
      else if(add1>=400){
        cout << "CD";
        add1-=400;
      }
      else if(add1>=100){
        cout << "C";
        add1-=100;
      }

      else if(add1>=90){
        cout << "XC";
        add1-=90;
      }
      else if(add1>=50){
        cout << "L";
        add1-=50;
      }
      else if(add1>=40){
        cout << "XL";
        add1-=40;
      }
      else if(add1>=10){
        cout << "X";
        add1-=10;
      }
      else if(add1>=9){
        cout << "IX";
        add1-=9;
      }
      else if(add1>=5){
        cout << "V";
        add1-=5;
      }
      else if(add1>=4){
        cout << "IV";
        add1-=4;
      }
      else if(add1>=1){
        cout << "I";
        add1--;
      }
    }
    cout <<endl;
  }

return 0;
system("pause");
}

 

以上是程式碼,正確答案為MMDCCLXV,顯示我的答案為MMDCCLXVII。因為不知道確切輸入值所以也不知道問題在哪,但用其他方式運算2765都沒有問題。求高手解答QQ

 
#12217: Re:測資14過不了


anandrewboy70900 (ShowTsai)

學校 : 國立中央大學
編號 : 27736
來源 : [203.204.218.144]
最後登入時間 :
2024-10-11 16:21:37
a013. 羅馬數字 -- NPSC 模擬試題 | From: [140.115.204.235] | 發表日期 : 2017-06-15 21:10

#include <iostream>
using namespace std;

int main()
{
  string rome1, rome2;
  while(cin >> rome1){
    if(rome1=="#")
      break;
    cin >> rome2;
    int add1=0, add2=0;
    for(int i=0; i<rome1.length(); i++){
      switch (rome1[i]){
        case 'I':
          add1++;
          break;
        case 'V':
          if(rome1[i-1]=='I')

            add1-=2;
          add1+=5;
          break;
        case 'X':
          if(rome1[i-1]=='I')

            add1-=2;
          add1+=10;
          break;
        case 'L':
          if(rome1[i-1]=='X')
            add1-=20;
          add1+=50;
          break;
        case 'C':
          if(rome1[i-1]=='X')
            add1-=20;
          add1+=100;
          break;
        case 'D':
          if(rome1[i-1]=='C')
            add1-=200;
          add1+=500;
          break;
        case 'M':
          if(rome1[i-1]=='C')
            add1-=200;
          add1+=1000;
          break;
      }
    }
    for(int i=0; i<rome2.length(); i++){
      switch (rome2[i]){
        case 'I':
          add2++;
          break;
        case 'V':
          if(rome2[i-1]=='I')
            add2-=2;
          add2+=5;
          break;
        case 'X':
          if(rome2[i-1]=='I')
            add2-=2;
          add2+=10;
          break;
        case 'L':
          if(rome2[i-1]=='X')
            add2-=20;
          add2+=50;
          break;
        case 'C':
          if(rome2[i-1]=='X')
            add2-=20;
          add2+=100;
          break;
        case 'D':
          if(rome2[i-1]=='C')
            add2-=200;
          add2+=500;
          break;
        case 'M':
          if(rome2[i-1]=='C')
            add2-=200;
          add2+=1000;
          break;
      }
    }
    if(add2>add1)
      add1=add2-add1;
    else if(add2<add1)
      add1=add1-add2;
    else{
      add1=0;
      cout << "ZERO";
    }
    while(add1!=0){
      if(add1>=1000){
        cout << "M";
        add1-=1000;
      }
      else if(add1>=900){
        cout << "CM";
        add1-=900;
      }
      else if(add1>=500){
        cout << "D";
        add1-=500;
      }
      else if(add1>=490){
        cout << "XD";
        add1-=490;
      }
      else if(add1>=400){
        cout << "CD";
        add1-=400;
      }
      else if(add1>=100){
        cout << "C";
        add1-=100;
      }

      else if(add1>=90){
        cout << "XC";
        add1-=90;
      }
      else if(add1>=50){
        cout << "L";
        add1-=50;
      }
      else if(add1>=40){
        cout << "XL";
        add1-=40;
      }
      else if(add1>=10){
        cout << "X";
        add1-=10;
      }
      else if(add1>=9){
        cout << "IX";
        add1-=9;
      }
      else if(add1>=5){
        cout << "V";
        add1-=5;
      }
      else if(add1>=4){
        cout << "IV";
        add1-=4;
      }
      else if(add1>=1){
        cout << "I";
        add1--;
      }
    }
    cout <<endl;
  }

return 0;
system("pause");
}

 




 
ZeroJudge Forum