The C++ Program: odometer.cpp
1 #include <iostream>
2 #include <cstdlib>
3 #include <string>
4 using namespace std;
5
6 string getPalindrome(string origNum, int numDigits)
7 {
8 string pal = origNum;
9 for (int i = 0; i < numDigits; i++)
10 {
11 int index = numDigits - 1 - i;
12 pal += origNum[index];
13 }
14 return pal;
15 }
16
17 string addOne(string origNum)
18 {
19 string num = origNum;
20 int index = num.length() - 1;
21 while (num[index] == '9')
22 {
23 num[index] = '0';
24 index--;
25 }
26 num[index] = (char)(num[index] + 1);
27 return num;
28 }
29
30 int main()
31 {
32 string str;
33 cin >> str;
34 while (str != "0")
35 {
36 int numDigits = str.length();
37 long long origNum = atol(str.c_str());
38
39 string palStr = str.substr(0, (numDigits + 1)/2);
40 string pal = getPalindrome(palStr, numDigits / 2);
41
42 if (atol(pal.c_str()) < origNum)
43 {
44 palStr = addOne(palStr);
45 pal = getPalindrome(palStr, numDigits / 2);
46 }
47
48 cout << (atol(pal.c_str()) - origNum) << endl;
49 cin >> str;
50 }
51 }
52
53