zoukankan      html  css  js  c++  java
  • js 数字游戏

    在某网站看到一道js题,觉得有点意思

    Some numbers have funny properties. For example:

    89 --> 8¹ + 9² = 89 * 1

    695 --> 6² + 9³ + 5⁴= 1390 = 695 * 2

    46288 --> 4³ + 6⁴+ 2⁵ + 8⁶ + 8⁷ = 2360688 = 46288 * 51

    Given a positive integer n written as abcd... (a, b, c, d... being digits) and a positive integer p we want to find a positive integer k, if it exists, such as the sum of the digits of n taken to the successive powers of p is equal to k * n. In other words:

    Is there an integer k such as : (a ^ p + b ^ (p+1) + c ^(p+2) + d ^ (p+3) + ...) = n * k

    If it is the case we will return k, if not return -1.

    Note: n, p will always be given as strictly positive integers.

    digPow(89, 1) should return 1 since 8¹ + 9² = 89 = 89 * 1
    digPow(92, 1) should return -1 since there is no k such as 9¹ + 2² equals 92 * k
    digPow(695, 2) should return 2 since 6² + 9³ + 5⁴= 1390 = 695 * 2
    digPow(46288, 3) should return 51 since 4³ + 6⁴+ 2⁵ + 8⁶ + 8⁷ = 236




    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
    <h1 onclick="digPow(46288,3)">Math</h1>
    
    <script>
        function digPow(n, p){
      // ...
      var len = (n.toString()).length;
      var newString = [];
      var intNum = 0;
      for(var i=0;i<len;i++){
        newString[i] = Math.pow(parseInt(nString[i]),p);
        p++;
        intNum += parseInt(newString[i]);
      }
       if(intNum%n ==0 ){
         var multi = parseInt(intNum/n);
         return multi;
       }else{
           return -1;
       }
    }
    </script>
    </body>
    </html>

    有更好的方法欢迎推荐!

     
  • 相关阅读:
    异常作业
    多态作业
    封装和继承作业
    类和对象作业
    多重循环、方法作业
    选择语句+循环语句作业
    数据类型和运算符作业
    初识Java作业
    C 数据结构堆
    C基础 旋转数组查找题目
  • 原文地址:https://www.cnblogs.com/hubgit/p/6893085.html
Copyright © 2011-2022 走看看