hdu1047(模拟大数循环相加)

题目信息:多个大整数相加求和,(用add函数循环相加)

http://acm.hdu.edu.cn/showproblem.php?pid=1047

AC代码:

/**

*大数的循环加法,转化为字符串循环相加到字符串为"0"

*注意s=="0"的情况,输出数据之间有空格

*/

#include<iostream>

#include<string>

#include<cstdio>

using namespace std;

string add(string s1,string s2){//字符串模拟大数加法,

string s;

int len1,len2;

len1=s1.size()-1; len2=s2.size()-1;

int i=0,flag=0;

while(len1>-1&&len2>-1){

int sum=flag+(s1[len1--]-‘0‘)+(s2[len2--]-‘0‘);

s+=char ((sum)%10+‘0‘);

flag=sum/10;

}

while(len1>-1){

int sum=flag+(s1[len1--]-‘0‘);

s+=char ((sum)%10+‘0‘);

flag=sum/10;

}

while(len2>-1){

int sum=flag+(s2[len2--]-‘0‘);

s+=char ((sum)%10+‘0‘);

flag=sum/10;

}

if(flag) s+=char (‘0‘+flag);

//cout<<s<<endl;

for(int i=0;i<s.size()/2;i++){

char c=s[i];

s[i]=s[s.size()-i-1];

s[s.size()-i-1]=c;

}

return s;

}

int main()

{

int t;

cin>>t;

while(t--){

string s,s1;

cin>>s;

if(s=="0"){//只有一个0的情况

cout<<"0"<<endl;

}

else{

cin>>s1;

for(int i=1;s1!="0";i++){

s=add(s,s1);

cin>>s1;

}

//cout<<s<<endl;

int k;

for(k=0;k<s.size();k++){

if(s[k]!=‘0‘) break;

}

if(k==s.size()) cout<<"0";//全是0

for(int i=k;i<s.size();i++){

cout<<s[i];

}

cout<<endl;

}

if(t) cout<<endl;//每次输出有一个空格

}

return 0;

}

时间: 2024-10-06 19:17:22

hdu1047(模拟大数循环相加)的相关文章

hdu1047(模拟大量的循环添加)

标题信息:总结多个大整数,(使用add循环相加的功能) http://acm.hdu.edu.cn/showproblem.php? pid=1047 AC代码: /** *大数的循环加法,转化为字符串循环相加到字符串为"0" *注意s=="0"的情况,输出数据之间有空格 */ #include<iostream> #include<string> #include<cstdio> using namespace std; str

el表达式循环相加

举个例子: <c:set var="sum" value="0"></c:set> <c:forEach items="${bmlist}" var="bm"> <c:set value="${sum + bm.num}" var="sum" /> </c:forEach> 这是,set的值即为循环相加的结果.

23_迭代器、模拟For循环

一.可迭代对象 和 迭代器 1.可迭代对象和迭代器 可迭代对象:可以直接作用于for循环的对象统称为可迭代对象,Iterable. 迭代器:可以被next()函数调用并不断返回下一个值的对象称为迭代器,Iterator. 2.判断某个对象是否是可迭代对象 dir() 会打印出对象的所有内置属性和方法,然后判断所有的属性和方法中是否存在'__iter__'. 1 l = [1,2,3,4] 2 print(dir(l)) #他会把列表的所有方法和属性打印出来.返回的是一个列表 3 print('_

字符串模拟大数相加——Java实现

本题是CVTE二面编程题,首先考虑返回值肯定是一个字符串(int会有溢出可能),并且两个字符串只含数字,不含"+"."-"这种. 代码如下: 1 public static String add(String str1, String str2) { 2 if(str1 == null) 3 return str2; 4 if(str2 == null) 5 return str1; 6 StringBuffer s1 = new StringBuffer(str1

hdu1753(模拟大实数相加)

题目信息: 手动求大实数相加和 http://acm.hdu.edu.cn/showproblem.php?pid=1753 AC代码: /** *大实数相加,以小数点为分界,模拟加法运算,最后合并 */ #include<iostream> #include<string> #include<algorithm> using namespace std; string add(string s1,string s2){//字符串模拟大整数加法,模拟结果有前导0 int

用fluent模拟内循环床气化燃烧(调试过程记录)

模拟对象为文献Combined gasi?cation of coal and biomass in internal circulating ?uidized bed[1]中的内循环气化炉.[1]http://www.sciencedirect.com/science/article/pii/S037838201100395X ---------------------------------------------------------------------分割线------------

hdu_1042(模拟大数乘法)

计算n! 1 #include<cstring> 2 #include<cstdio> 3 using namespace std; 4 int num[50000]; 5 int main() 6 { 7 int n; 8 while(~scanf("%d",&n)) 9 { 10 memset(num,0,sizeof(num)); 11 int len = 1; 12 num[1] = 1; 13 for(int i = 2; i <= n;

模拟--大数加法

问题描述 在C/C++语言中,整型所能表示的范围一般为-231到231(大约21亿),即使long long型,一般也只能表示到-263到263.要想计算更加规模的数,就要用软件来扩展了,比如用数组或字符串来模拟更多规模的数及共运算. 现在输入两个整数,请输出它们的和. 输入格式 两行,每行一个整数,每个整数不超过1000位 输出格式 一行,两个整数的和. 样例输入 15464315464465465482321654151 样例输出 15464797786119616 数据规模和约定 每个整数

Python socket编程之三:模拟数据库循环发布数据

1. f1.py # -*- coding: utf-8 -*- import socket import struct import sqlalchemy import pandas ######################################################################## class sckt: #----------------------------------------------------------------------