开发者社区> kdmktdi2qut24> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

[kata] Playing with digits

简介: package kata_011; /** * Some numbers have funny properties. For example: * * 89 --> 8¹ + 9² = 89 * 1 * * 695 --> 6² + 9³ + 5⁴= 1390 = 695 * 2...
+关注继续查看
package kata_011;

/**
 * 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⁷ = 2360688 = 46288 * 51
 * 
 * @author SeeClanUkyo
 *
 */
public class DigPow {
    public static void main(String[] args) {

        System.out.println(digPow(46288, 3));
    }

    public static long digPow(int n, int p) {
        // your code
        if (n > 0) {
            String nstr = n + "";
            int nlen = nstr.length();

            long sum = 0;
            for (int i = 0; i < nlen; i++) {
                sum += Math.pow(Integer.parseInt(nstr.substring(i, i + 1)), (p + i));
                if (sum % n == 0) {
                    return sum / n;
                }
            }

        }
        return -1;
    }
}

 

将编程看作是一门艺术,而不单单是个技术。 敲打的英文字符是我的黑白琴键, 思维图纸画出的是我编写的五线谱。 当美妙的华章响起,现实通往二进制的大门即将被打开。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
手写数字识别 Digit Recognizer(上)
手写数字识别 Digit Recognizer(上)
0 0
手写数字识别 Digit Recognizer(下)
手写数字识别 Digit Recognizer(下)
0 0
LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之三:两次优化
本文是《LeetCode第三题(Longest Substring Without Repeating Characters)三部曲》的第二篇,前一篇文章已经列出了完整的解题思路,今天来将此思路转化为具体的Java代码
0 0
SLA By Short Brain
正式开始学习英语已经过了3天了,通过这几天对ShortBrain英语文档的学习,感触颇深。ShortBrain把以往我们用的十几年的英语学习模式彻底打翻,尽管大多数人们并不认同。
0 0
High&NewTech:L&L / GCP BOOTH at CES 2019 - January 8-11, 2019 - Westgate Convention Center Las Vegas
High&NewTech:L&L / GCP BOOTH at CES 2019 - January 8-11, 2019 - Westgate Convention Center Las Vegas
0 0
在 Kubernetes 上弹性深度学习训练利器 -- Elastic Training Operator
由于云计算在资源成本和弹性扩容方面的天然优势,越来越多客户愿意在云上构建 AI 系统,而以容器、Kubernetes 为代表的云原生技术,已经成为释放云价值的最短路径, 在云上基于 Kubernetes 构建 AI 平台已经成为趋势。
0 0
Elastic Training Operator: Kubernetes 上运行弹性深度学习训练任务
## 背景 由于云计算在资源成本和弹性扩容方面的天然优势,越来越多客户愿意在云上构建AI系统,而以容器,Kubernetes 为代表的云原生技术,已经成为释放云价值的最短路径, 在云上基于Kubernetes 构建AI平台已经成为趋势。 当面临较复杂的模型训练或者数据量大时,单机的计算能力往往无法满足算力要求。 通过使用 阿里的AiACC 或者社区的 [horovod](https:/
0 0
kubernetes1.4 基础篇:Learn Kubernetes 1.4 by 6 steps(1):概要
由来 本教程受Kubernetes官方最新更新的文档所触发,之所以没有做单纯的翻译是因为如下几个原因: 1. Kubernetes官方此教程基于minikube,个人对minikube可能有偏见,觉得像玩具。
854 0
mirantis fuel
使用mirantis公司的openstack部署工具--fuel,迅速部署体验openStack云管理软件; 1,使用virtualbox虚拟化工具(此工具在此使用主要是为了简化新建虚机的网络规划,fuel种子主机的网卡仅一个用于管理控制下面的openStack-control,compute00**XXX,storage.
1743 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载