您的位置:首页 > 其它

HDU 1047(大数相加)(数组模拟)

2016-04-06 16:18 267 查看
这个题目啊,其实扎实的做的话应该并不难,然而我想看是统一用字符串,还是再转化成数组,然后看了别人的题解,傻冒一样的像别人一样谢了getchar();真是傻冒了,我用的scanf("%s",str),跟它有个什么关系,难道是这几天有点急功近利,所以才着急看别人的思路,淡定啊,自己的才是最好的!!

只需要用一个数组,将每次输入的字符串转化并加上就行了!(最后输出格式也要注意下)

代码如下:

//HDU 1047 数组模拟大数
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int n,i,j;
cin>>n;
while(n--)
{
char str[110];
int sum[110]={0};//如果放到开头定义,别忘了memset();
while(~scanf("%s",str)&&str[0]!='0')
{
for(i=strlen(str)-1,j=0;i>=0;i--,j++)
{
sum[j]+=str[i]-48;//转化成数字并加到数组上
if(sum[j]>9)//大于9进位
{
sum[j]-=10;
sum[j+1]+=1;
}
}
}
for(i=105;i>=0;i--)
if(sum[i])//找到首位数字
break;

for(j=i;j>=0;j--)
cout<<sum[j];
if(i<0)
cout<<0;
cout<<endl;
if(n)
cout<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: