数据串位?
查看原帖
数据串位?
278914
zmrlcwds楼主2023/2/25 03:57

只有第五个测试有问题,

350204156568812004512541458715942878921069349854678
5120132301230048014584016540526804565814706519846494321001345794503242112976563432120
输出变成这个样子了
350204156568812004512541458715950240264602460096029168033081053609131629413039692988642002691589006484225953126864240

我打断点去看的时候,数据都很正常,一个个输出时也很正常,但是直接编译运行就会变成这个样子 下面是我的代码

#include <bits/stdc++.h>
using namespace std;

char *st1, *st2;
int arr[ 501 ];
int brr[ 501 ];

int main() {
  st1 = ( char * ) malloc( sizeof( char ) );
  st2 = ( char * ) malloc( sizeof( char ) );
  scanf( "%s %s", st1, st2 );
  int len1;
  int len2;
  if ( ( ( strlen( st1 ) == strlen( st2 ) ) && strcmp( st1, st2 ) ) ||
       ( strlen( st1 ) > strlen( st2 ) ) ) {
    len1 = strlen( st1 );
    len2 = strlen( st2 );
    for ( int i = 0; i < len1; i++ ) {
      arr[ len1 - i - 1 ] = st1[ i ] - '0';
    }
    for ( int i = 0; i < len2; i++ ) {
      brr[ len2 - i - 1 ] = st2[ i ] - '0';
    }
  } else {
    len2 = strlen( st1 );
    len1 = strlen( st2 );
    for ( int i = 0; i < len2; i++ ) {
      brr[ len2 - i - 1 ] = st1[ i ] - '0';
    }
    for ( int i = 0; i < len1; i++ ) {
      arr[ len1 - i - 1 ] = st2[ i ] - '0';
    }
  }
  int temp = 0;
  int in = 0;
  for ( int i = 0; i <= len1; i++ ) {
    temp = arr[ i ] + brr[ i ] + in;
    arr[ i ] = temp % 10;
    if ( temp > 9 ) {
      in = temp / 10;
    } else {
      in = 0;
    }
  }
  if ( arr[ len1 ] > 0 )
    printf( "%d", arr[ len1 ] );
  for ( int i = len1 - 1; i >= 0; i-- ) {
    printf( "%d", arr[ i ] );
  }
}
2023/2/25 03:57
加载中...