# Number Manipulation# Basic Math

d329 - 00713 - Adding Reversed Numbers

🔗 前往 ZeroJudge 原題

題目描述

題目要求讀取多組測試資料,每組資料包含兩個正整數。對於每組資料,將這兩個數字分別反轉,然後將反轉後的數字相加,最後將相加後的結果再次反轉,並輸出最終的反轉結果。反轉數字時,需要去除前導零。

解題思路

解題思路是直接按照題目描述進行操作。對於每個輸入的數字,使用一個 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);
	}
}

Discussion