範例程式碼 uva10018

//uva10018
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>

using namespace std;

int main() {
	int data;

	cin >> data;	// 取得要判斷的資料數

	for(int d = 0; d < data; d++) {
		char sNum[11], srNum[11] = "";
		bool isReverse = false;
		int count = 0;
		long long int num, rNum;

		// 讀取數字並反轉
		cin >> sNum;
		for(int i = strlen(sNum) - 1, j = 0; i >= 0; i--, j++)
			srNum[j] = sNum[i];

		while(!isReverse) {
			count++;	// 統計執行了幾次
			
			// 從文字轉成數字型態好做計算
			num = atol(sNum);
			rNum = atol(srNum);

			// 從數字再轉回文字並反轉好比較回文
			sprintf(sNum, "%lld", num + rNum);
			for(int i = strlen(sNum) - 1, j = 0; i >= 0; i--, j++)
				srNum[j] = sNum[i];

			// 判斷是否回文
			if(strcmp(sNum, srNum) == 0)
				isReverse = true;
		}

		// 輸出最後答案
		cout << count << ' ' << sNum << endl;
	}

	return 0;
}