zoukankan      html  css  js  c++  java
  • 1136 A Delayed Palindrome

    Consider a positive integer N written in standard notation with k+1 digits a​i​​ as a​k​​⋯a​1​​a​0​​ with 0 for all i and a​k​​>0. Then N is palindromic if and only if a​i​​=a​k−i​​ for all i. Zero is written 0 and is also palindromic by definition.

    Non-palindromic numbers can be paired with palindromic ones via a series of operations. First, the non-palindromic number is reversed and the result is added to the original number. If the result is not a palindromic number, this is repeated until it gives a palindromic number. Such number is called a delayed palindrome. (Quoted from https://en.wikipedia.org/wiki/Palindromic_number )

    Given any positive integer, you are supposed to find its paired palindromic number.

    Input Specification:

    Each input file contains one test case which gives a positive integer no more than 1000 digits.

    Output Specification:

    For each test case, print line by line the process of finding the palindromic number. The format of each line is the following:

    A + B = C
    
     

    where A is the original number, B is the reversed A, and C is their sum. A starts being the input number, and this process ends until C becomes a palindromic number -- in this case we print in the last line C is a palindromic number.; or if a palindromic number cannot be found in 10 iterations, print Not found in 10 iterations. instead.

    Sample Input 1:

    97152
    
     

    Sample Output 1:

    97152 + 25179 = 122331
    122331 + 133221 = 255552
    255552 is a palindromic number.
    
     

    Sample Input 2:

    196
    
     

    Sample Output 2:

    196 + 691 = 887
    887 + 788 = 1675
    1675 + 5761 = 7436
    7436 + 6347 = 13783
    13783 + 38731 = 52514
    52514 + 41525 = 94039
    94039 + 93049 = 187088
    187088 + 880781 = 1067869
    1067869 + 9687601 = 10755470
    10755470 + 07455701 = 18211171
    Not found in 10 iterations.

    题意:

      寻找回文数字(关于中心对称)

    思路:

      大数加法模拟。

    Code:

     1 #include <bits/stdc++.h>
     2 
     3 using namespace std;
     4 
     5 string addFunction(string num1, string num2) {
     6     int carry = 0, n1, n2, temp;
     7     int len = num1.length();
     8     reverse(num2.begin(), num2.end());
     9     string ans = "";
    10     while (len >= 1) {
    11         len--;
    12         n1 = num1[len] - '0';
    13         n2 = num2[len] - '0';
    14         temp = n1 + n2 + carry;
    15         carry = temp / 10;
    16         ans = to_string(temp % 10) + ans;
    17     }
    18     if (carry == 1) ans = to_string(carry) + ans;
    19     return ans;
    20 }
    21 
    22 bool isPalindrome(string str) {
    23     int i = 0, j = str.length() - 1;
    24     while (i < j) {
    25         if (str[i++] != str[j--]) return false;
    26     }
    27     return true;
    28 }
    29 
    30 int main() {
    31     string str, sum, temp;
    32     cin >> str;
    33     for (int i = 0; i < 10; ++i) {
    34         if (isPalindrome(str)) {
    35             cout << str << " is a palindromic number." << endl;
    36             break;
    37         }
    38         temp = str;
    39         sum = addFunction(str, str);
    40         reverse(temp.begin(), temp.end());
    41         cout << str << " + " << temp << " = " << sum << endl;
    42         if (i == 9) cout << "Not found in 10 iterations." << endl;
    43         str = sum;
    44     }
    45 
    46     return 0;
    47 }

      刚开始因为求进位的时候不小心算错了,结果最后一组数据没有通过。

    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    树莓派写Python程序输入不了#
    树莓派系统安装、HDMI显示
    网络七层协议
    TCP协议中的三次握手和四次挥手(图解)(转载http://blog.csdn.net/whuslei/article/details/6667471)
    英语积累
    读《淘宝技术这十年》--笔记
    关于imx6核心板qt系统U盘挂载
    《赢在测试2》-- 推荐的阅读书籍
    三月,关于团队管理的重要性
    自动化测试及工具的一点理解
  • 原文地址:https://www.cnblogs.com/h-hkai/p/12728768.html
Copyright © 2011-2022 走看看