• ACM HDU 1282 回文数猜想(简单水题)


    回文数猜想

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 1524    Accepted Submission(s): 945


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

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

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

    Sample Input
    27228 37649
     

    Sample Output
    3 27228--->109500--->115401--->219912 2 37649--->132322--->355553
     

    Author
    SmallBeer(CML)
     

    Source
     

    Recommend
    lcy
     
     
    #include<stdio.h>
    int change(int n)
    {
    int a[20];
    int k=0;
    while(n!=0)
    {
    k
    ++;
    a[k]
    =n%10;
    n
    /=10;
    }
    int res=0;
    for(int i=1;i<=k;i++)
    {
    res
    *=10;
    res
    +=a[i];
    }
    return res;
    }
    int main()
    {
    int n,i,cnt;
    int result[100];
    while(scanf("%d",&n)!=EOF)
    {
    cnt
    =0;
    result[
    0]=n;
    while(n!=change(n))
    {
    n
    =n+change(n);
    result[
    ++cnt]=n;
    }
    printf(
    "%d\n",cnt);
    for(i=0;i<cnt;i++)
    printf(
    "%d--->",result[i]);
    printf(
    "%d\n",result[cnt]);
    }
    return 0;
    }

  • 相关阅读:
    Java-数组
    排序-冒泡排序
    排序-选择排序
    Java-基础
    Java-Html-session
    Java-API
    Tomcat-常用设置
    Tomcat目录结构
    TOMCAT-安装配置
    Java-public
  • 原文地址:https://www.cnblogs.com/kuangbin/p/2129439.html
Copyright © 2020-2023  润新知