首页 > 代码库 > 2015年校招--华为上机笔试题--大数相乘
2015年校招--华为上机笔试题--大数相乘
#include "stdafx.h" #include<string> #include<iostream> using namespace std; void add(string &sum,string temp) { int len1=sum.size(); int len2=temp.size(); int jw=0; int i,j; for(i=len1-1,j=len2-1;i>=0 && j>=0;i--,j--) { int a=sum[i]-'0'; int b=temp[j]-'0'; int c=a+b+jw; if(c>9) { sum[i]=c-10+'0'; jw=1; } else { sum[i]=c+'0'; jw=0; } } if(jw==1) { while(jw==1) { int a=sum[j]-'0'; a++; if(a>9) { sum[j]='0'+a-10; jw=1; } else { sum[j]='0'+a; jw=0; } } } } string mul(string sum,char ch,int off) { int len=sum.size(); int a=ch-'0'; int jw=0; for(int i=len-1;i>=0;i--) { int b=sum[i]-'0'; int c=a*b+jw; jw=c/10; int d=c%10; sum[i]=d+'0'; } if(jw!=0) { sum=string(1,'0'+jw)+sum; } sum=sum+string(off,'0'); return sum; } string get_result(string str1,string str2) { string sum(200,'0'); int len=str2.size(); for(int i=len-1;i>=0;i--) { string temp=mul(str1,str2[i],len-1-i); add(sum,temp); } int index=sum.find_first_not_of('0'); sum=sum.substr(index); return sum; } int main() { string str1="56789"; string str2="555432"; string result=get_result(str1,str2); cout<<result<<endl; system("pause"); return 0; }
2015年校招--华为上机笔试题--大数相乘
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。