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-08-09 23:53:05

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

for循环添加10个用户和删除10个用户

1. 循环添加10个用户: #!/bin/bash# for i in {1..10}; do    if id user$i &> /dev/null; then        echo "user$i exists."    else        useradd user$i        echo user$i | passwd --stdin user$i &> /dev/null        echo "add user user$i

bash中for循环添加10个用户和删除10个用户

1. 循环添加10个用户: #!/bin/bash# for i in {1..10}; do    if id user$i &> /dev/null; then        echo "user$i exists."    else        useradd user$i        echo user$i | passwd --stdin user$i &> /dev/null        echo "add user user$i

JS - 循环添加 DropDownList(Select)

代码: <td style="padding-left: 10px;"> <select id="ddl_picture_3"> <!--循环添加1-600--> <script> for (var i = 100; i <= 700; i++) { document.write("<option value= r" + i + "'>" + i + "

百度地图循环添加标注,并循环为标注添加信息窗口问题解决

原文:百度地图循环添加标注,并循环为标注添加信息窗口问题解决 最近几年在搞地图方面的开发,主要是循环为坐标添加标注并为标注添加弹出信息窗口,起初我的代码如下: var map = new BMap.Map("Mapcontainer"); var JsonObj = eval(JsonStr); if (JsonObj != null) { for (var i = 0; i < JsonObj.length; i++) { var point = new BMap.Point(

创建存储过程向表中循环添加数据

CREATE PROCEDURE dowhile() BEGIN DECLARE n int; set n=1; WHILE n<=1000 do INSERT into hasindex(num) VALUES (n); set n=n+1; END WHILE; END; CALL dowhile();创建存储过程向表中循环添加数据

Echarts中series循环添加数据

1.首先定义变量 2.根据后台查询出来的数据循环添加到变量中 var series = []; for (var i = 0, size = data.dataList.length; i < size; i++) { legendData.push(data.dataList[i].sjjc); series.push({ name: data.dataList[i].sjjc, type: 'line', smooth: true, label: { normal: { show: true

hdu1047(模拟大数循环相加)

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

使用for循环添加点击事件时,获取i值的方法

比如页面上有一个ul,数个li,现在给li添加点击事件. var li = document.getElementsByTagName("li"); for(var i = 0; i < li.length; i++) { li[i].addEventListener("click",function () { console.log(i); }) } 但是,这样写之后我们发现,点击任何一个li,打印的值都为5,这是因为闭包中共用i值,而i的值由于执行for循

linux链表之:使用for循环添加链表、list_add、list_add_tail

使用for循环,向链表中添加10个节点 如果使用list_add,则将节点添加到链表头,那么使用后面的list_for_each打印时,便是倒着的: ********************************************* index:9, name:name9 index:8, name:name8 index:7, name:name7 index:6, name:name6 index:5, name:name5 index:4, name:name4 index:3,