d329 - 00713 - Adding Reversed Numbers
題目描述
題目要求讀取多組測試資料,每組資料包含兩個正整數。對於每組資料,將這兩個數字分別反轉,然後將反轉後的數字相加,最後將相加後的結果再次反轉,並輸出最終的反轉結果。反轉數字時,需要去除前導零。
解題思路
解題思路是直接按照題目描述進行操作。對於每個輸入的數字,使用一個 while 迴圈將數字反轉。反轉的過程是將數字的每一位提取出來,然後將其添加到反轉後的數字的末尾。然後,將兩個反轉後的數字相加,再將和反轉,得到最終的結果。
複雜度分析
- 時間複雜度: O(N),其中 N 是輸入數字的位數。因為需要遍歷每個數字的每一位來進行反轉和相加。
- 空間複雜度: O(1),因為只使用了常數級別的額外空間來存儲反轉後的數字和中間結果。
程式碼
#include <stdio.h>
int main(){
int a,b,n;
scanf("%d",&n);
while(n--){
scanf("%d%d",&a,&b);
int ax=0,bx=0,ans=0;
while(a>0){
ax*=10;
ax+=a%10;
a/=10;
}
while(b>0){
bx*=10;
bx+=b%10;
b/=10;
}
ax+=bx;
while(ax>0){
ans*=10;
ans+=ax%10;
ax/=10;
}
printf("%d\n",ans);
}
}