結果

問題 No.518 ローマ数字の和
ユーザー Yamyuki
提出日時 2017-05-28 22:53:43
言語 C90
(gcc 12.3.0)
結果
AC  
実行時間 1 ms / 2,000 ms
コード長 1,445 bytes
コンパイル時間 185 ms
コンパイル使用メモリ 22,400 KB
実行使用メモリ 5,376 KB
最終ジャッジ日時 2024-09-21 15:43:47
合計ジャッジ時間 928 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 19
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.c:3:5: warning: conflicting types for built-in function ‘strlen’; expected ‘long unsigned int(const char *)’ [-Wbuiltin-declaration-mismatch]
    3 | int strlen(char *s){
      |     ^~~~~~
main.c:2:1: note: ‘strlen’ is declared in header ‘<string.h>’
    1 | #include<stdio.h>
  +++ |+#include <string.h>
    2 | 
main.c: In function ‘main’:
main.c:69:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   69 |         scanf("%d",&n);
      |         ^~~~~~~~~~~~~~

ソースコード

diff #
プレゼンテーションモードにする

#include<stdio.h>
int strlen(char *s){
int i=0;
while(s[i]!='\0'){i++;}
return i;
}
int convert(char s){
switch (s) {
case 'I':
return 1;
case 'V':
return 5;
case 'X':
return 10;
case 'L':
return 50;
case 'C':
return 100;
case 'D':
return 500;
case 'M':
return 1000;
}
return 0;
}
void construct(int a,char m1,char m2,char m3){
char s[5];
int i=0;
switch(a){
case 3:
s[i]=m1;
i++;
case 2:
s[i]=m1;
i++;
case 1:
s[i]=m1;
s[i+1]='\0';
printf("%s",s);
return;
case 4:
printf("%c%c",m1,m2);
return;
case 5:
case 6:
case 7:
case 8:
s[0]=m2;
for(i=0;i<a-5;i++){
s[i+1]=m1;
}
s[a-4]='\0';
printf("%s",s);
return;
case 9:
printf("%c%c",m1,m3);
return;
case 0:
return;
}
}
int main(int argc, char const *argv[]){
char r[22];
int n,a=0,c,i,p,l,d,b[4];
scanf("%d",&n);
getchar();
while(n>0){
i=0;
r[0]=getchar();
while(r[i]!=' ' && r[i]!='\n'){
i++;
r[i]=getchar();
}
l=i;
p=0;
c=0;
for(i=l-1;i>=0;i--){
c=convert(r[i]);
d=0;
while(i-d-1>=0 && r[i]==r[i-d-1]){
d++;
}
if(p!=0 && p>c){
a-=c*(d+1);
}else{
a+=c*(d+1);
}
p=c;
i-=d;
}
if(a>3999){
printf("ERROR\n");
return 0;
}
n--;
}
for(i=0;i<4;i++){
b[i]=a%10;
a/=10;
}
construct(b[3],'M','?','?');
construct(b[2],'C','D','M');
construct(b[1],'X','L','C');
construct(b[0],'I','V','X');
printf("\n");
return 0;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0