• (TOJ1228)回文数猜想


    描述

    一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数。任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其和不是回文数,则重复上述步骤,一直到获得回文数为止。例如:68变成154(68+86),再变成605(154+451),最后变成1111(605+506),而1111是回文数。于是有数学家提出一个猜想:不论开始是什么正整数,在经过有限次正序数和倒序数相加的步骤后,都会得到一个回文数。至今为止还不知道这个猜想是对还是错。现在请你编程序验证之。

    输入

    每行一个正整数。
    特别说明:输入的数据保证中间结果小于2^31。

    输出

    对应每个输入,输出两行,一行是变换的次数,一行是变换的过程。

    样例输入

    27228
    37649

    样例输出

    3
    27228--->109500--->115401--->219912
    2
    37649--->132322--->355553
     1 #include<stdio.h>
     2 #include<math.h>
     3 #include<string.h>
     4 #include<ctype.h>
     5 
     6 int a[1000],b[1000];
     7 
     8 int reverse(int n)   //将给定数字翻转 
     9 {
    10     int i,s=0;
    11     while(n)
    12     {
    13         s=s*10+n%10;
    14         n=n/10;
    15     }
    16     return s;
    17 }
    18 
    19 int judge(int n)   //判断数字是否为回文数 
    20 {
    21     int j,i=0;
    22     while(n)    //取数字n的每位数字存储与数组a中 
    23     {
    24         a[i++]=n%10;
    25         n=n/10;
    26     }
    27     for(j=0; j<i/2; j++)  //循环判断数字是否相等 
    28     {
    29         if(a[j]!=a[i-j-1])
    30           break;
    31     }
    32     if(j==i/2) return 1;
    33     else return 0;
    34 }
    35 
    36 void solve()
    37 {
    38     int n,j,flag,count;
    39     while(scanf("%d",&n)!=EOF){
    40     count=flag=j=0;
    41     while(!judge(n))
    42     {
    43            b[j++]=n;
    44         n=n+reverse(n);
    45         count++;
    46         flag++;
    47     }
    48     b[flag++]=n;
    49     printf("%d\n",count);
    50     printf("%d",b[0]);
    51     for(j=1; j<flag; j++)   //按照指定格式输出 
    52      printf("--->%d",b[j]);
    53     printf("\n");
    54     }
    55 }
    56     
    57 int main()
    58 {
    59     solve(); 
    60     return 0;
    61 }
  • 相关阅读:
    [linux]CentOS防火墙
    [工具]VIM键位
    [mac]mac 终端 常用命令
    [数据结构]“堆”,"栈","堆栈","队列"的区别
    [java]Java构造方法与析构方法
    [环境]Eclipse安装WindowBuilder
    [BZOJ 1441]Min(裴蜀定理)
    [BZOJ 4563][Haoi2016]放棋子(错排公式)
    [BZOJ 4517][Sdoi2016]排列计数(组合数学/错排公式)
    [BZOJ 3680]吊打XXX(模拟退火)
  • 原文地址:https://www.cnblogs.com/xueda120/p/3077469.html
Copyright © 2020-2023  润新知