题意:给两个整数,求这两个数的反向数的和的反向数,和的末尾若为0,反向后则舍去即可。即若1200,反向数为21。题目给出的数据的末尾不会出现0,但是他们的和的末尾可能会出现0。
#include <iostream> #include <string.h> #include <stdio.h> #include <string> #include <string.h> using namespace std; int n1,n2;//n1表示a的位数,n2表示b的位数 int a[100],b[100]; void add() { for(int i=0; i<(n1>n2?n1:n2); i++) { a[i]=a[i]+b[i]; if(a[i]>9) { a[i]-=10; a[i+1]++; } } } int main() { int t; char s1[100],s2[100]; scanf("%d",&t); while(t--){ scanf("%s%s",s1,s2); memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); n1=strlen(s1); n2=strlen(s2); for(int i=0;i<n1;i++){ a[i]=s1[i]-'0'; } for(int i=0;i<n2;i++){ b[i]=s2[i]-'0'; } add(); //right表示反向数的和的最右端第一个不是0的位置 int right=0; while(1){ if(a[right]==0) right++; else break; } int left=n1+n2; //left表示反向数的和的最左端第一个不是0的位置 while(1){ if(a[left]==0) left--; else break; } //反向输出 for(int i=right;i<=left;i++) printf("%d",a[i]); printf(" "); } return 0; }