zoukankan      html  css  js  c++  java
  • 1079 延迟的回文数

    给定一个 k+1 位的正整数 N,写成 ak​​a1​​a0​​ 的形式,其中对所有 i 有 0ai​​<10 且 ak​​>0。N 被称为一个回文数,当且仅当对所有 i 有 ai​​=aki​​。零也被定义为一个回文数。

    非回文数也可以通过一系列操作变出回文数。首先将该数字逆转,再将逆转数与该数相加,如果和还不是一个回文数,就重复这个逆转再相加的操作,直到一个回文数出现。如果一个非回文数可以变出回文数,就称这个数为延迟的回文数。(定义翻译自 https://en.wikipedia.org/wiki/Palindromic_number )

    给定任意一个正整数,本题要求你找到其变出的那个回文数。

    输入格式:

    输入在一行中给出一个不超过1000位的正整数。

    输出格式:

    对给定的整数,一行一行输出其变出回文数的过程。每行格式如下

    A + B = C
    

    其中 A 是原始的数字,B 是 A 的逆转数,C 是它们的和。A 从输入的整数开始。重复操作直到 C 在 10 步以内变成回文数,这时在一行中输出 C is a palindromic number.;或者如果 10 步都没能得到回文数,最后就在一行中输出 Not found in 10 iterations.

    输入样例 1:

    97152
    

    输出样例 1:

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

    输入样例 2:

    196
    

    输出样例 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.
    
     
    思路:这里用了reverse函数对字符串逆置,以及结合大数加法对字符串相加入字符数组,而字符数组可以直接转换成string类型,讨论十步之内是否有回文串就行,注意最开始先判断是不是回文串再操作......
     
     1 #include<iostream>
     2 #include<cstring>
     3 #include<cmath>
     4 #include<algorithm>
     5 using namespace std;
     6 int panduan(string str1);
     7 int main()
     8 {
     9     string str1,str2;
    10     cin>>str1;
    11     char temp[1001];
    12     if(panduan(str1)==1)
    13     {
    14         cout<<str1<<" is a palindromic number."<<endl;
    15         return 0;
    16     }
    17     for(int i=0;i<10;i++)
    18     {
    19         str2=str1;//用str2存str1,再逆置str1 
    20         reverse(str1.begin(),str1.end());
    21         //实现大数加法
    22         int sum=0,jinwei=0,count=0;
    23         for(int i=str2.size()-1;i>=0;i--)
    24         {
    25             sum=(str1[i]-'0')+(str2[i]-'0')+jinwei;
    26             temp[count++]=sum%10+'0';
    27             jinwei=sum/10;
    28         }
    29         if(jinwei!=0)
    30             temp[count++]=jinwei+'0';
    31         temp[count]='';//末尾手动加比较保险 
    32         cout<<str2<<" + "<<str1<<" = ";
    33         str1=temp;
    34         reverse(str1.begin(),str1.end());
    35         cout<<str1<<endl;
    36         if(panduan(str1)==1)
    37         {
    38             cout<<str1<<" is a palindromic number."<<endl;
    39             return 0;
    40         }
    41     }
    42         cout<<"Not found in 10 iterations."<<endl; 
    43         return 0;
    44  }
    45 int panduan(string str1)
    46 {
    47     string str2=str1;
    48     reverse(str1.begin(),str1.end());
    49     if(str1==str2)
    50         return 1;
    51     else
    52         return 0;
    53 }
    大佬见笑,,
  • 相关阅读:
    Delphi
    delphi trayIcon控件,如何实现窗口最小化的时候到系统托盘
    delphi2010自带 TTrayIcon 托盘图标控件使用方法
    通过例子来简单了解下TProgressBar的使用。 pas文件程序如下
    ORA-12154,ORA-12560解决过程
    博客备份小工具3
    各大招聘网站信息实时查询浏览
    IE7中使用Jquery动态操作name问题
    js问题杂记
    动态sql
  • 原文地址:https://www.cnblogs.com/xwl3109377858/p/10489551.html
Copyright © 2011-2022 走看看