• PTA高精度除法


    PTA高精度除法

    思路

    1. 转化:首先将两个字符数组A,B(逆序)转化为整数数组a,b。

    2. 取出数组a的长度记为lena,取出b数组的长度记为lenb。且lena>lenb

    3. 把除法理解成多次的减法

      1. 进入循环

      2. 自高位向低位匹配相减

      3. 注意:在数组相减过程中是需要对是否减的了进行检测的。(直接相减会破坏被减数组的结构)

        • 若是减不了还硬减的话,需要做还原处理
        • 也可以先模拟一遍,将数组a的部分和数组b分别赋值给数组ta和数组tb,如果可以相减的话
        • 注意:最高位有可能会涉及往高位借1,所以数组a的部分数组的长度比数组b的长度加一。

    代码

    include

    include<stdio.h>

    include<string.h>

    using namespace std;

    string sa,sb;
    int a[10005],b[10005];
    int ta[10005],tc[10005];
    int c[10005];
    int main()
    {
    cin>>sa>>sb;
    int alen=sa.length();
    int blen=sb.length();

    for(int i=alen-1;i>=0;i--)
    {
        a[alen-i]=sa[i]-'0';	
    }	
    
    for(int i=blen-1;i>=0;i--)
    {
        b[blen-i]=sb[i]-'0';	
    }
    
    for(int i=alen-blen+1;i>=1;i--)
    {
    	/*
    	建立模拟数组ta,tb(其实就是数组b); 
    	*/ 
    	for(int j=i;j<=i+blen-1+1;j++)
    	{
    		ta[j-i+1]=a[j];
    	}
    	//用相减模拟相除 
    	int flag=1;
    	while(flag)
    	{
    		for(int k=1;k<=blen;k++)
    		{  
    		    
                //新建的数组减掉减数 
    			if(ta[k]-b[k]<0)//错了一下 
    			{
    				//这里可能发生不断向高位借一
    			    int cur=k+1;
    			    ta[k]=ta[k]-b[k]+10;
    			    ta[k+1]--;
    			    while(ta[cur]<0&&cur<blen+1)//注意不要帮高位做加减,而是单纯的借位罢了 
    			    {
    			    	ta[cur+1]--;
    			    	ta[cur]+=10;
    			    	cur++;
    				}
    				if(ta[blen+1]<0)
    				     flag=0;
    			}
    			else
    			    ta[k]=ta[k]-b[k];
    		
    		}
    		//如果可以被减的话 
    		if(flag)
    		{
    		//	//用ta覆盖a
    			for(int j=i;j<=i+blen-1+1;j++)
            	{
    	        	a[j]=ta[j-i+1];
            	} 
                //答案数组 
                c[i]++; 
    		}
    		else
    		{
    			break;
    		}
    	}	
    }
    
    int clen=alen;
    while(c[clen]==0)
        clen--;
       
    for(int i=clen;i>=1;i--)
    {
        cout<<c[i];	
    }   
    return 0;
    

    }

  • 相关阅读:
    了解WP的传感器
    载入条LoadingBar
    能分组的GridView
    ASP.NET MVC的过滤器
    ASP.NET的路由
    自己绘制的仪表盘
    可拖拽的ListBox
    自己绘制的滑块条
    利用mciSendString播放音频
    mis导入器的加强版——vdproj文件资源浏览器
  • 原文地址:https://www.cnblogs.com/BeautifulWater/p/14562679.html
Copyright © 2020-2023  润新知