poj1504--求两个数的反转数的和的反转数

题意:给定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;
}

  

上一篇:hadoop学习笔记——环境搭建


下一篇:ESP32 学习笔记 - 环境搭建