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;
}

时间: 2024-10-24 01:34:29

2015年校招--华为上机笔试题--大数相乘的相关文章

2015年校招--华为上机笔试题--去重复单词

#include "stdafx.h" #include<set> #include<string> #include<iostream> using namespace std; int main() { set<string> s; char buf[1000]={0}; gets(buf); char* p=buf; while(*p!=0) { if(*p==',' || *p=='.') { *p=' '; } p++; } p

2015阿里校招研发工程师笔试题

1.C++内存分配中说法错误的是() A 对于栈来说,生长方向是向上的,也就是向着内存地址增加的方向 //错,对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向:对于栈来讲,它的生长方向是向下的,是向着内存地址减小的方向增长. B 对于堆 ,大量的new/delete操作会造成内存空间不连续 //对,对于堆来讲,频繁的new/delete势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低.对于栈来讲,则不会存在这个问题,因为 //栈是先进后出的队列,他们是如此的一一对应,以至

Java开发工程师上机笔试题

网上看到3道比较好的Java开发工程师上机笔试题,没有答案这里把答案写出来,给大家参考. 1.编一个程序,输入10个整数,并放在数组中,先降序输出所有的数,再统计并输出其中正数.负数和零的个数 package cn.Pigzhu.test; import java.util.Scanner; /**  * 控制台输入10个数字,并输入正负和零的个数  * @author xiaoyezhu  *  */ public class test { public static void main(St

2015阿里巴巴前端实习生在线笔试题

Summary 大公司开始招实习生了,我也变成过来人了,品味到之前的酸甜苦辣,除了加油好像也没法说那么多. 因为是你在奋斗,心态这件事是你们在掌握的.但是我们唯一能提供的是我们topview实验室新鲜出炉的面经和笔试. (其实我在想有没应届生春招 - -!) Where 2015阿里巴巴前端实习生在线笔试题

2015年百度实习生前端笔试题上海卷a

1.写出javascript运行结果:alert(‘5’+5); 结果:’55’ 2.写出javascript运行结果:for(var i=0; i<10; i++){} alert(i); 结果:10 3.Cookie.sessionStorage.localStorage的区别 参考:共同点:都是保存在浏览器端,且同源的. 区别:cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递.而sessionStorage和localStorage不会

2015年9月阿里校招前端工程师笔试题

前一段时间参加了阿里的9月校招,为了贯彻及时总结的精神,今天就来总结一下我做的这套题目吧. 1.下面哪段css代码通常用于页面水平居中: 1 A:site-align:center; 2 B:margin:center; 3 C:margin:auto 0; 4 D:margin:0 auto; 这题很简单,水平居中答案选D.每个选项来剖析一下, A选项在我做开发两年来,完全没有见到过,初略百度一下也没看到相关的东西:B选项,明显错误:D,其实D可以做到页面垂直居中,要怎么做呢,如下图,默认是h

2016届 360校招内推笔试题--2015.8.11

一.填空题40题,时间80分钟 和360实习的题目有一些是重复的.可以参考牛客网:http://www.nowcoder.com/. 二.两道编程题,时间70分钟,题目不是特别难,如下所示 第一道: 思路: 统计每个字符出现的次数.然后遍历一次,找到第一个出现次数为1的字符.在我的vs上调试可以通过,但是到360里面的编辑器就不行了,说是超时.从题目的hint里可以看出可能是从终端接收数据出问题.本想一个一个字符接收的,最后时间不够了.还没解决.下面贴出没有通过的代码. 代码: #include

美团2015校招哈尔滨站笔试题--第二题

有一组随机排列的字母数组,请编写一个时间复杂度为O(n)的算法,使得这些字母安装字母从小到大顺序排好.说明:字母区分大小写,相同的字母,排序后小写排在大写前.例如:R,B,B,b,W,W,B,R,B,w排序后:b,B,B,B,B,R,R,w,W,W1)描写思路(2分)2)请用你熟悉的编程语言编写代码实现(8分) /** * * @author 无心流泪 * 空间换时间 */ public class InterviewExercise { public void mySort(char[] st

2015年阿里实习Java开发上机笔试题

下列Java代码中变量a.b.c分别在内存的()存储区存放. class A{ private String a = "a"; public boolean methodB(){ String b = "bb"; final String c = "cc"; } } A:堆区.堆区.堆区 B:堆区.栈区.堆区 C:堆区.栈区.栈区 D:堆区.堆区.栈区 E:静态区.栈区.堆区 F:静态区.栈区.栈区 解析: a属于A类的成员变量.在String