#4348: 測資太鬆了!


Dick810126 (Dick)


我認為此題的測資太不謹慎了,

我的CODE如下(有BUG喔!)它竟然給我過了! :

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

#define MAX 150

char *unit[10]={"零","壹","貳","參","肆","伍","陸","柒","捌","玖",}  ;
char *table[3]={"仟","佰","拾"};
char *thr[4]={"萬","億","兆","京"};

void dis(char * s,int len)
{
 int i,c=(len+3)/4,pos;
 i=(4-len%4)%4;
 do
 {
  for(;i<4;i++)
  {
   pos=len-c*4+i;
   if(s[pos]!='0')
   {
    printf("%s",unit[s[pos]-48]);
    if(i!=3)
     printf("%s",table[i]);
   }else{
    if(pos<len-1&&s[pos+1]!='0'&&i!=3)
     printf("%s",unit[0]);
   }
  }
  if(c>1)
   printf("%s",thr[c-2]);
  i=0;
 }while(--c);
 return ;
}

int main()
{
 char input[MAX];
 while(gets(input)!=NULL)
 {
  dis(input,strlen(input));
  puts("");
 }   
    return 0;
}

有發現BUG嗎?

輸入100000000000000就知道了!

所以我認為測資要再加強一點!

 

#4419: Re:測資太鬆了!


abcd6891 (曄哥)


我認為此題的測資太不謹慎了,

我的CODE如下(有BUG喔!)它竟然給我過了! :

#include
#include

#define MAX 150

char *unit[10]={"零","壹","貳","參","肆","伍","陸","柒","捌","玖",}  ;
char *table[3]={"仟","佰","拾"};
char *thr[4]={"萬","億","兆","京"};

void dis(char * s,int len)
{
 int i,c=(len+3)/4,pos;
 i=(4-len%4)%4;
 do
 {
  for(;i<4;i++)
  {
   pos=len-c*4+i;
   if(s[pos]!='0')
   {
    printf("%s",unit[s[pos]-48]);
    if(i!=3)
     printf("%s",table[i]);
   }else{
    if(pos
     printf("%s",unit[0]);
   }
  }
  if(c>1)
   printf("%s",thr[c-2]);
  i=0;
 }while(--c);
 return ;
}

int main()
{
 char input[MAX];
 while(gets(input)!=NULL)
 {
  dis(input,strlen(input));
  puts("");
 }   
    return 0;
}

有發現BUG嗎?

輸入100000000000000就知道了!

所以我認為測資要再加強一點!

 

整數數字 >=0 且 <=2147483647