zoukankan      html  css  js  c++  java
  • 大数乘法——2016开发实习生腾讯模拟笔试编程题

    给出两个大数,用字符串模拟整型数字的乘法。

    #include<iostream>
    #include<string>
    using namespace std;
    
    char* MultiString(char* str1,char* str2){
        
        int len1=strlen(str1),len2=strlen(str2);
        if(len2>len1){              //len1,str1对应较长的字符串
            char* temp=str1;
            int temp1=len1;
            str1=str2;
            str2=temp;
            len1=len2;
            len2=temp1;
        }  
    
        char* ret=new char[len1+len2];
        memset(ret,'0',sizeof(char)*(len1+len2-1));  //初始化字符串
        ret[len1+len2-1]='';
    
        if(len1==0||len2==0)
            return ret;                
        int temp1=0,temp2=0;
        for(int i=len2-1;i>=0;i--){
            int carry=0;
            for(int j=len1-1;j>=0;j--){
                int sum=ret[i+j]-'0';
                if(carry>0)
                    sum+=carry;
                temp1=str1[j]-'0';
                temp2=str2[i]-'0';
                sum+=temp1*temp2;
                if(sum>=10){
                    carry=sum/10;
                }
                else carry=0;
                ret[i+j]=sum%10+'0';  //规格化处理
                if(j==0&&carry>0)    //最高位以后还有可能进位
                    ret[i-1]+=carry;
            }
            cout<<i<<"    "<<ret<<endl;
        }
        
        char* p=ret;
        while(*p=='0')   //如果前面有0,从第一位不是0开始输出
            p++;
        cout<<p<<endl;
        return p;
    }
    
    int main(){
        char* s1="23456";
        char* s2="2345";
        MultiString(s1,s2);
        return 0;
    }
  • 相关阅读:
    django_视图层_便捷工具
    django_视图层_编写url
    04bootstrap_表单
    人工智能之线性代数
    人工智能之数组操作
    C 获取Linux系统信息
    RPM
    Windows 启动&关闭Hyper-V
    C 指定初始化器
    指针的运算
  • 原文地址:https://www.cnblogs.com/LUO77/p/5356308.html
Copyright © 2011-2022 走看看