编程实现任意长度整数的加法(整数可以长度超出C++中int范围)

#include <iostream>
#include<string>
using namespace std;
string add(string s1,string s2)
{
    string s0;
    int c=0;
	if(s1.size()<s2.size())
	{
		string ss;
		ss=s1;
		s1=s2;
		s2=ss;
	}
	int len1=s1.size()-1,len2=s2.size()-1;
	while(len1>=0)
	{
		char m;
		if(len2>=0)
		{
			int a=(s1[len1]-48)+(s2[len2]-48)+c;
			c=a/10;
			a=a%10;
			m=a+48;
			s0.insert(0,m);
			len1--;
			len2--;
		}
		else
		{
			int b=s1[len1]-48+c;
			c=b/10;
			b=b%10;
			m=b+48;
			s0.insert(0,m);
			len1--;
		}
	}

	if(c!=0)
	{
		s0.insert(0,c+48);
	}

	return s0;
}

int main()
{
    string s1,s2;
    cin>>s1>>s2;
    string s0=add(s1,s2);
	cout<<s0<<endl;
    return 0;
}

  效率可能不是很高

时间: 2024-10-12 02:30:27

编程实现任意长度整数的加法(整数可以长度超出C++中int范围)的相关文章

字符串分隔 -&gt;连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; ?长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

?连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组:?长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输入字符串(输入2次,每个字符串长度小于100) 输出描述: 输出到长度为8的新字符串数组 输入例子: abc 123456789 输出例子: abc00000 12345678 90000000 import java.util.*; public class Main{     public static void main(String[] ar

风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,

转自:http://www.cnblogs.com/ranranblog/p/5845010.html 风口之下,猪都能飞.当今中国股市牛市,真可谓“错过等七年”. 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的股价. 假设你一开始没有股票,但有至多两次买入1股而后卖出1股的机会,并且买入前一定要先保证手上没有股票.若两次交易机会都放弃,收益为0. 设计算法,计算你能获得的最大收益. 输入数值范围:2<=

两位整数相乘形成的最大回文数是 9009 = 99 &#215; 91。编写程序,求得任意输入的 n 位整数相乘形成的最大回文数。

题目内容: 两位整数相乘形成的最大回文数是 9009 = 99 × 91.编写程序,求得任意输入的 n 位整数相乘形成的最大回文数. 输入格式: 正整数 n 输出格式: n 位整数相乘形成的最大回文数 输入样例: 2 输出样例: 9009 时间限制:1000ms内存限制:32000kb def palin(num):    num_p = 0    num_t = num    while num_t != 0:        num_p = num_p * 10 + num_t % 10   

★★★【卡法 常用js库】: js汇合 表单验证 cookie设置 日期格式 电话手机号码 email 整数 小数 金额 检查参数长度

[卡法 常用js库]: js汇合 表单验证  cookie设置  日期格式  电话手机号码  email  整数  小数  金额   检查参数长度 // +---------------------------------------------------------------------- // | sunqiang // +---------------------------------------------------------------------- // | Copyrig

给定长度为 n 的整数数组 nums,其中 n &gt; 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。-----力扣

给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积. 示例: 输入: [1,2,3,4] 输出: [24,12,8,6] 说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题. Java实现: class Solution { public int[] productExceptSelf(int[] nums) { int [] output = new int[num

定义一个由整数组成的数组,然后输入一个整数X,如果X不在此数组中,返回小于X的最大数的位置i和大于X的最小数的位置j

//定义一个由整数组成的数组,然后输入一个整数x,如果X不在此数组中,返回小于X的最大数的位置i和大于X的最小数的位置j: //若X在此数组中,则返回数组中这个数的位置. 源代码: #include<iostream> using namespace std; void main() { int array[]={1,2,3,4,5,6,7,89,45,32,56,78,12,43,90,19};//16个数字 int x; int max=array[0]; int min=array[0]

10.16输入一个字符串,内有数字和非数字字符,如: a123x456 17960? 302tab5876 将其中连续的数字作为一个整数,依次存放到一数组num中。例如123放在num[0]中,456放在num[1]中……统计共有多少个整数,并输出这些数。

10.16输入一个字符串,内有数字和非数字字符,如: a123x456 17960? 302tab5876 将其中连续的数字作为一个整数,依次存放到一数组num中.例如123放在num[0]中,456放在num[1]中--统计共有多少个整数,并输出这些数. #include <stdio.h> int main(){ void search(char * parr, int * pnum); char arr[100],* parr; int num[30],* pnum; parr=arr;

一个文件中有40亿个整数,每个整数为四个字节,内存为1GB,写出一个算法:求出这个文件里的整数里不包含的一个整数

4个字节表示的整数,总共只有2^32约等于4G个可能.为了简单起见,可以假设都是无符号整数.分配500MB内存,每一bit代表一个整数,刚好可以表示完4个字节的整数,初始值为0.基本思想每读入一个数,就把它对应的bit位置为1,处理完40G个数后,对500M的内存遍历,找出一个bit为0的位,输出对应的整数就是未出现的.算法流程:1)分配500MB内存buf,初始化为02)unsigned int x=0x1;  for each int j in file  buf=buf|x<<j;  e

将一整数逆序后放入一数组中

1.题目描述 将一整数逆序后放入一数组中(非递归实现) 例如: 1234 变为 {4,3,2,1} 2.代码实现 1 package com.wcy.october; 2 3 /** 4 * 时间:2016年10月23日 5 * 题目:将一整数逆序后放入一数组中(非递归实现) 例如: 1234 变为 {4,3,2,1} 6 */ 7 public class RecursionTest2 { 8 9 /** 10 * 将一整数逆序后放入一数组中 11 * @param number 待逆序的整数