永发信息网

武汉大学OJ的一道ACM题目,总是wrong answer。很想知道原因。谢谢!

答案:1  悬赏:30  手机版
解决时间 2021-04-06 05:43
  • 提问者网友:泪痣哥哥
  • 2021-04-05 16:11
武汉大学OJ的一道ACM题目,总是wrong answer。很想知道原因。谢谢!
最佳答案
  • 五星知识达人网友:末日狂欢
  • 2021-04-05 17:27
//就改了下面两个注释的地方,其他没改
#include
#include
// WOJ ACM 1162
#define MAX 1010
char n1[ MAX], n2[ MAX], res[ MAX]; int len1, len2; //不需要unsigned吧,普通的char就好了吧
char * bstr, * sstr;
int blen, slen;// *******************改成int,因为char的范围才128,你用char类型存储大数的长度果断不够用啦
void add_and_show(){
 int i, j;
 for( i = 0; i < blen - slen; ++ i){
  res[i] = bstr[i];
 }
 for( i = blen - slen, j = 0; i < blen; ++ i, ++ j){
  res[i] = sstr[j] + bstr[i] - '0';
 }
 for( i = blen - 1; i > 0; -- i){
  if( res[i] - '0' > 9){
   res[i] -= 10;
   res[i - 1] += 1;
  }
 }
 if( res[0] > '0' + 9){
  res[0] -= 10;
  printf( "1");
 }
 res[blen] = '';
 printf( "%s
", res);
}
int main(){
 int n;
 int i;
 scanf( "%d", & n);
 for( i = 0; i < n; ++ i){
  scanf( "%s", n1); len1 = strlen( n1);
  scanf( "%s", n2); len2 = strlen( n2);
  if( len1 > len2){
   blen = len1; slen = len2;
   bstr = n1; sstr = n2;
  }else{
   blen = len2; slen = len1;
   bstr = n2; sstr = n1;
  }
  add_and_show();
 }
 return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯