wu


私信TA

用户名:cncfvc

访问量:227220

签 名:

读研狗没有时间刷题了~~

等  级
排  名 3
经  验 37387
参赛次数 8
文章发表 265
年  龄 25
在职情况 学生
学  校 电子科技大学
专  业 通信工程

  自我简介:

写代码 真好玩 ~

这题要用字符串来写了额
但是处理起来比较麻烦  要处理好进位的问题
我的思路是先把进位算出来 再加到字符里面
为了防止数据溢出原有的位数 我还在两个加数的末尾加了个‘0’

注意事项:

小心点写 别急慢慢来


#include<iostream>
#include<cstring>
using namespace std;
void f(string str1,string str2)
{
  
    string str3="",str4="",str5 (1000,' ');
    for(int i=str1.length()-1;i>=0;i--)
    {
    	str3+=str1[i];
    }
	for(int i=str2.length()-1;i>=0;i--)
    {
    	str4+=str2[i];
	}
	int len1=str3.length();
	int len2=str4.length();
	str3+='0';
	str4+='0';
    //cout<<str4<<endl;
	//cout<<str3<<endl;
    if(len1<=len2)
	{
		for(int i=0;i<len1;i++)
		{
			if((str3[i]-'0')+(str4[i]-'0')>=10)
			{
				str4[i+1]+=1;
			}
			str5[i]='0'+((str3[i]-'0')+(str4[i]-'0'))%10;
		
		}
		for(int i=len1;i<len2;i++)
		{
			if((str4[i]-'0')>=10)
			{
				str4[i+1]+=1; 
			}
			str5[i]='0'+(str4[i]-'0')%10;
		}
		//cout<<str4[len2]<<endl;
		if(str4[len2]!='0')
		str5[len2]=str4[len2];
	}
    else
    {
    	      for(int i=0;i<len2;i++)
		{
			if((str3[i]-'0')+(str4[i]-'0')>=10)
			{
				str3[i+1]+=1;
			}
			str5[i]='0'+((str3[i]-'0')+(str4[i]-'0'))%10;
		
		}
		for(int i=len2;i<len1;i++)
		{
			if((str3[i]-'0')>=10)
			{
				str3[i+1]+=1; 
			}
			str5[i]='0'+(str3[i]-'0')%10;
		}
		//cout<<str3[len1]<<endl;
		if(str3[len1]!='0')
		str5[len1]=str3[len1];
    	
    	
  }
	for(int i=str5.length()-1;i>=0;i--)
	{
		if(str5[i]!=' ')
		cout<<str5[i];
	}
	cout<<endl;
}
int main()
{
	string str1,str2;
	while(cin>>str1>>str2)
	{
		f(str1,str2);
	}
	return 0;
 }


 

0.0分

2 人评分

  评论区

  • «
  • »