编程小练习--回文数链长

题:

一个数加上他颠倒过来的数,直到最终结果是个回文数,看需要几步。

例如:87 + 78 = 165; 165 + 561 = 726; 726 + 627 = 1353; 1353 + 3531 = 4884  结果为 4。

答:

var palindromeChainLength = function(n) {
    var m = reverseNum (n);
    if(m===n) {
        return 0;
    } else {
        return 1 + palindromeChainLength(m+n);
    }
};
function reverseNum (n) {
    return parseInt(n.toString().split("").reverse().join(""));
}
判断调换前后数字是否相等,是的话返回0,不是递归判断两数字和,结果+1。

reverseNum 方法是把一个数字颠倒过来:
  转化成字符串 -> 字符串转化为数组 -> reverse()将数组倒叙 -> 组合成字符串 -> 转化成数字

原文地址:https://www.cnblogs.com/forlong/p/9139029.html

时间: 2024-10-25 00:44:39

编程小练习--回文数链长的相关文章

牛客网在线编程:统计回文数

题目描述: "回文串"是一个正读和反读都一样的字符串,比如"level"或者"noon"等等就是回文串.花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B.现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串.你接受花花的请求,帮助她寻找有多少种插入办法可以使新串是一个回文串.如果字符串B插入的位置不同就考虑为不一样的办法.例如:A = "aba",B = "b&

回文数(swust oj-371)

回文数 Time Limit:   1000MS       Memory Limit:   65535KB Submissions:   70       Accepted:   12 Description 一个自然数如果把所有数字倒过来以后和原来的一样,那么我们称它为回文数.例如151和753357.我们可以把所有回文数从小到大排成一排:1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, ...注意10不是回文数,虽然我们可以把它写成010,但是在本题中前导0是不

[swustoj 371] 回文数

回文数(0371) 问题描述 一个自然数如果把所有数字倒过来以后和原来的一样,那么我们称它为回文数.例如151和753357.我们可以把所有回文数从小到大排成一排:1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, ...注意10不是回文数,虽然我们可以把它写成010,但是在本题中前导0是不允许的. 你的任务是求出第i小的回文数.例如第1,12,24大的回文数分别是1,33,151. 输入 输入只有一行,即i(1<=i<=2*10^9).输出 输出只有一行,即第i小的

48.输入任意正整数,编程判断该数是否为回文数(回文数是指从左到右读与从右到左读一样,如12321)

//1.输入一个数,将其每一位分离,并保存如一个数组 //2.判断数组最后录入的一位是第几位 //3.循环判断是否满足回问数的要求 #include<iostream> using namespace std; int main() { int n,temp; int k=0; int a[20]; cout<<"please input an number: "<<endl; cin>>n; for(int i=0;i<20;i+

Java编程判断是否是回文数

import javax.swing.JOptionPane; 自然数中还有一类数被称为回文数.回文数就是一个数的两边对称,如11,121,1221,9339,30203等等 public class CircleTest{ public static void main(String[] args){ String inputValue = JOptionPane.showInputDialog("请输入一个整数"); StringBuffer source = new String

第二届战神杯线上编程挑战赛月赛第一题:回文数

题目详情: Njzy学习了回文串后联想到了回文数,他希望统计出一个区间内的全部回文数.如今给定一个闭区间[a,b],求这个区间里有多少个回文数. 比方[20,30],仅仅有一个回文数那就是22. 输入描写叙述: 输入包括多组測试数据,每组測试数据包括两个整数a,b, (0<a<=b<10^6). 输出描写叙述: 对于每组測试数据输出对应的答案. 答题说明: 输入例子: 1 10 20 30 300 400 输出例子: 9 1 10 解题思路: total[i]代表从1到i之间有多少回文数

[亚马逊amazon] 在线笔试题 大于非负整数N的第一个回文数 Symmetric Number

1.题目 如标题,求大于整数N(N>=0)的第一个回文数的字符串表示形式. 这个题目也是当时笔试第一次见到,花了一个小时才做出了.慢慢总结还是挺简单的. 2.分析 分析如下: (1)一位数N(9除外). 第一个大于N回文数等于N+1,如大于3的第一个回文数是4. (2)奇数位(一位数除外) 需要看“左边反转数字”是否大于"右边数字". 1)如果小于等于,则“左边+中间字母”组成的数字+1,再对称就可以. 2)如果大于,则左边数字直接对称到右边就可以啦. (3)偶数位 需要看“左边

习题-四季-回文数-不死神兔

1-键盘录入月份,输出对应的季节.一年有四季;3,4,5春季;6,7,8夏季;9,10,11秋季;12,1,2冬季 public class Demo02Test {     public static void main(String[] args) {         // 键盘录入一个月份,用Scanner实现         Scanner sc = new Scanner(System.in);         // 接收数据         System.out.println("请

特殊回文数

基础练习 特殊回文数 时间限制:1.0s 内存限制:512.0MB 问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n . 输入格式 输入一行,包含一个正整数n. 输出格式 按从小到大的顺序输出满足条件的整数,每个整数占一行. 样例输入 52 样例输出 899998 989989 998899 数据规模和约定 1<=n<=54. #include<stdio.h> int main