题意:给定4321 5678,结果再反转(1234+8756)
一开始以为是poj1503一样,就稀里糊涂的敲代码,实际上有不同
如题:先求1234
+ 8765
----------------------
这样就相似poj1503
4 | 3 | 2 | 1 |
5 | 6 | 7 | 8 |
不过在str串与fin相加时,就按给定的顺序加就行
for(i=0,j=0;i<=len-1;i++,j++)
总结:得到的结果还要反转,假设不反转应该是从右往左输出,结果是忽略前导0(从左往右)输出
分别找出都不为0的下标
int left=0,right=103;
while(1)
{
if(fin[right]==0)
right--;
else
break;
}
while(1)
{
if(fin[left]==0)
left++;
else
break;
}
最后输出
技巧:输入格式1234 4567
只用一个串,重复用两次就行,scanf遇到空格结束,相当于第一次进while(t)循环,就只读到了一个数串
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
int n,i,j,len,temp;
char str[100];
int fin[104];
scanf("%d",&n);
while(n--)
{
memset(fin,0,sizeof(fin));
int t=2;
while(t--){
scanf("%s",str);
len=strlen(str);
temp=0;
for(i=0,j=0;i<=len-1;i++,j++)
{
int c;
c=fin[j]+temp+str[i]-'0';
fin[j]=c%10;
temp=c/10;
}
while(temp>0)
{
int c;
c=temp+fin[j];
fin[j]=c%10;
temp=c/10;
j++;
}
}
int left=0,right=103;
while(1)
{
if(fin[right]==0)
right--;
else
break;
}
while(1)
{
if(fin[left]==0)
left++;
else
break;
}
for(i=left;i<=right;i++)
{
printf("%d",fin[i]);
}
printf("\n");
}
return 0;
}