• 任意长度的正小数的加法(YT新人之巅峰大决战05)


    Problem Description

    话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫“大明”。
    这时他已经不是那个只会做100以内加法的那个“小明”了,现在他甚至会任意长度的正小数的加法。

    现在,给你两个正的小数A和B,你的任务是代表大明计算出A+B的值。

    Input

    本题目包含多组测试数据,请处理到文件结束。
    每一组测试数据在一行里面包含两个长度不大于400的正小数A和B。

    Output

    请在一行里面输出输出A+B的值,请输出最简形式。详细要求请见Sample Output。

    Sample Input

    1.1 2.9
    1.1111111111 2.3444323343
    1 1.1
    

    Sample Output

    4
    3.4555434454
    2.1
    
    
    
    #include<iostream>
    
    using namespace std;
    void shuchu(char *a,int m1,int t1,int t2)
    {int i;
    	for(i=799;i>=0;i--)
    			if(i!=m1)
    			
    			if(a[i]>'9'&&i!=0)
    			{
    				if(i==m1+1)
    				{a[i]=a[i]-10;
    				a[i-2]++;}
    				else
    				{
    
    				a[i]=a[i]-10;
    				a[i-1]++;
    				}
    			}
    				if(a[i]>'9'&&i==0)
    		{a[i]-=10;cout<<1;}	
    		for(i=0;i<t1||i<t2;i++)
    		{
    			if(i==m1)
    				cout<<'.';
    			else
    			cout<<a[i];
    			
    		}
    	
    }
    int main()
    {  char a[800],b[800];
    int t1,t2,m1,m2,n=0,i,i1,k1,k2;
    while (cin>>a>>b)
    {	t1=strlen(a);
        t2=strlen(b);
    	for(i=t1;i<800;i++)
    		if((a[i]<'0'||a[i]>'9')&&a[i]!='.')
    		a[i]=NULL;
    	for(i=t2;i<800;i++)
    		if((b[i]<'0'||b[i]>'9')&&b[i]!='.')
    		b[i]=NULL;
    		m1=0;
    	m2=0;
    	
    	for(i=0;i<t1;i++)
    	{
    		if(a[i]=='.')
    		{
    			m1=i;
    			break;
    		}
    	}
    
    	
    
    	for(i=0;i<t2;i++)
    	{
    		if(b[i]=='.')
    		{
    			m2=i;
    			break;
    		}
    	}
    	k1=m1;
    	k2=m2;
    
    
    	if(m1>=m2&&m2!=0)
    	{
    		for(k1--,k2--;k1>=0&&k2>=0;k1--,k2--)
    		a[k1]=a[k1]+b[k2]-48;
    		k1=m1;
    	k2=m2;
    		for(k1++,k2++;k1<t1||k2<t2;k1++,k2++)
    			a[k1]=a[k1]+b[k2]-48;
    
    	 shuchu(a,m1, t1, t2);
    
    
    
    	
    	}
    
    
    	if(m2>m1&&m1!=0)
    	{
    		for(k1--,k2--;k1>=0&&k2>=0;k1--,k2--)
    		b[k2]=a[k1]+b[k2]-48;
    		k1=m1;
    	k2=m2;
    		for(k1++,k2++;k1<t1||k2<t2;k1++,k2++)
    			b[k2]=a[k1]+b[k2]-48;
    
    		shuchu(b,m2, t1, t2);
    
    
    
    	
    	}
    	if(m1==0&&m2!=0)
    		if(t1<=m2)
    		{	for(t1--,k2--;t1>=0;t1--,k2--)
    				b[k2]=b[k2]+a[t1]-48;
    				for(i=799;i>=0;i--)
    			shuchu(b,m2, t1, t2);
    		}
    		else
    		{k1=t1;
    			for(k1--,k2--;k2>=0;k1--,k2--)
    				a[k1]=b[k2]+a[k1]-48;
    			k1=t1;
    			k2=m2;
    			for(;k1<800;k1++,k2++)
    				a[k1]=b[k2];
    				for(i=799;i>=0;i--)
    			shuchu(a,m1, t1, t2);
    		}
    
    
    
    		if(m2==0&&m1!=0)
    		if(t2<=m1)
    		{	for(t2--,k1--;t2>=0;t2--,k1--)
    				a[k1]=b[t1]+a[k1]-48;//////////////////////////////
    				for(i=799;i>=0;i--)
    			shuchu(a,m1, t1, t2);
    		}
    		else
    		{k2=t2;
    			for(k1--,k2--;k2>=0;k1--,k2--)
    				b[k2]=a[k1]+b[k2]-48;
    			k2=t2;
    			k1=m1;
    			for(;k2<800;k2++,k1++)
    				b[k2]=a[k1];
    				for(i=799;i>=0;i--)
    			shuchu(b,m2, t1, t2);
    		}
    		if(m1==m2&&m2==0)
    		{
    			if(t1>t2)
    			{
    				m1=t1;m2=t2;
    				for(m1--,m2--;m2>=0;m1--,m2--)
    					a[m1]=a[m1]+b[m2]-48;
    				for(i=799;i>=0;i--)
    				{if(a[i]>'9'&&i!=0)
    					{a[i]=a[i]-10;a[i-1]++;}
    					if(a[i]>'9'&&i==0)
    					{a[i]=a[i]-10;cout<<1;}}
    					for(i=0;i<t1;i++)
    				
    						cout<<a[i];
    			}
    					if(t2>=t1)
    			{
    				m2=t2;m1=t1;
    				for(m1--,m2--;m1>=0;m1--,m2--)
    					b[m2]=a[m1]+b[m2]-48;
    				for(i=799;i>=0;i--)
    				{if(b[i]>'9'&&i!=0)
    					{b[i]=b[i]-10;b[i-1]++;}
    					if(b[i]>'9'&&i==0)
    					{b[i]=b[i]-10;cout<<1;}
    				}
    					for(i=0;i<t2;i++)
    						cout<<b[i];
    
    			
    					}	
    		
    		
    		}
    
    	}
    return 0;
    }


  • 相关阅读:
    12款非常精致的免费 HTML5 & CSS3 网站模板
    Jetstrap 在线构建 Bootstrap 的工具
    Divshot —— 在线的可视化网页设计
    Hello World!
    我的B站主页:https://space.bilibili.com/611212 内有视频题解
    《冒险岛历史》路西德的前世今生
    看错题系列 cf622C C2. Skyscrapers (hard version)
    Codeforces Round #616 (Div. 2) F. Coffee Varieties 交互题
    Codeforces Round #616 (Div. 2) E. Prefix Enlightenment 图论
    Codeforces Round #616 (Div. 2) D. Irreducible Anagrams 找规律
  • 原文地址:https://www.cnblogs.com/oversea201405/p/3767035.html
Copyright © 2020-2023  润新知