大数加算(C++実装)


問題1513:[ブルーブリッジカップ][アルゴリズム向上VIP]大数加算
タイトルの説明
2つの正の整数a,bを入力し、a+bの値を出力します. 
入力
2行、第1行a、第2行b.aおよびbの長さはいずれも1000ビット未満である.
しゅつりょく
1行、a+bの値. 
サンプル入力
4 
2 

サンプル出力
6
#include

using namespace std;
typedef long long ll;

int a[1010],b[1010],c[1010];
int len;
string ax,by;

void add(int x , int y){
//	d[1010] = {0};
	for( int i =1 ;i <=len ;++i){
		c[i] = a[i] + b[i] + c[i];
		c[i+1] = c[i]/10;
		c[i] %= 10; 
	}
	if(c[len+1] ) len++;
}

int main()
{
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	memset(c,0,sizeof(c));
	cin>>ax>>by;
	for(int i = ax.length(),j =0;j < ax.size(),i > 0;i--,j++){
		a[i] = ax[j] - '0';// ax         a  ,      1
	}
	for(int i = by.length(),j =0;j < by.size(),i > 0;i--,j++){
		b[i] = by[j] - '0';// by         b  ,      1
	}	
	 len = max(ax.size(),by.size());
	add(ax.size(),by.size());
	for( int i=len ;i >0 ;--i){
		printf("%d",c[i]);
	}
	return 0;
 } 

二重ブラシを貼ったときに書いた小さな致命的な間違いです
コード「int len=max(s 1.length()、s 2.length();add(len);」パラメータを渡すときにパラメータ例えば5+6のときに出力は1です.lenはパラメータlenがadd関数を通過した後なのか1なのか、結果は「答えが9%間違っている」からです.
#include
using namespace std;
#define M 1010
int a[M],b[M],c[M];
string s1,s2;
void add(int len){
memset(c,0,sizeof(c));
for(int i = 1;i <= len ;++i){
c[i] = a[i] + b[i] + c[i];
c[i+1] = c[i] / 10;
c[i] %= 10;
}
if(c[len + 1]) len++;
}
int main(){
cin>>s1>>s2;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(int i = 0,j = s1.length() ;i < s1.length(),j > 0;++i,j--)
a[j] = s1[i] - '0';
for(int i = 0,j = s2.length() ;i < s2.length(),j > 0;++i,j--)
b[j] = s2[i] - '0';
int len = max(s1.length(),s2.length());
add(len);
for(int i = len;i > 0;i--)
cout<