这道题目起初看,so easy。再看一下ac率,注意到没有说明变量类型。显然是一道字符串的题。需要考虑+/-符号位,+.1、-.1、00010.0、+0、-00.00等情况,同时数组开到100000以上。wa了两次,第二次是才发现输出的是YES/NO,我一直输出的是yes/no,测了很多数据都是对的才发现是大小写错误,巨坑,而且代码写的也挺乱。
#include <stdio.h> #define MAXNUM 110000 char a[MAXNUM]; char b[MAXNUM]; void chg(char a[]) { int i, beg, end, tmp; tmp = strlen(a); if (a[0] != '+' && a[0] != '-') { for (i=tmp; i>=0; --i) a[i+1] = a[i]; a[0] = '+'; tmp++; } beg = 1; while (beg<tmp && a[beg] == '0') beg++; if (beg) { if (beg>1 && a[beg] == '.') beg--; if (beg == tmp) beg--; for(i=beg; i<=tmp; ++i) a[i-beg+1] = a[i]; } tmp = 0; for (i=0; i<strlen(a); ++i) if (a[i] == '.') { tmp = i; break; } if (tmp == 0) { tmp = strlen(a); if (tmp==2 && a[1]=='0') a[0] = '+'; return ; } else if (tmp == 1) { end = strlen(a); for (i=end; i>=tmp; --i) a[i+1] = a[i]; a[tmp] = '0'; tmp++; } end = strlen(a) - 1; while (end>tmp && a[end] == '0') end--; if ( end == tmp ) a[end] = '