Problem20

简介:

1.package com.yao.shuimu.euler;  
2.  
3.import java.util.ArrayList;  
4.import java.util.List;  
5.  
6./** 
7. * Created by IntelliJ IDEA. 
8. * User: shuimuqinghua77 
9. * Date: 11-12-15 
10. * Time: 下午1:25 
11. */  
12.public class Problem20 {  
13.  
14.    public static void main(String[] args) throws Exception {  
15.  
16.        byte[] result = digit(1);  
17.        for (byte i = 1; i <= 100; i++) {  
18.            result = multiply(digit(i), result);  
19.        }  
20.  
21.        int sum = 0;  
22.        for (byte digit : result) {  
23.            sum += digit;  
24.        }  
25.        System.out.println(sum);  
26.  
27.    }  
28.  
29.    private static byte[] multiply(byte[] multiplicand/**被乘数**/, byte[] multiplier) throws Exception {  
30.        if (multiplicand.length == 0 || multiplier.length == 0) {  
31.            throw new Exception("被乘数/乘数为空!!!");  
32.        }  
33.        if (multiplicand.length < multiplier.length) {  
34.            byte[] temp = multiplier;  
35.            multiplier = multiplicand;  
36.            multiplicand = temp;  
37.        }  
38.        byte[] result = new byte[multiplicand.length + multiplier.length];  
39.        for (int i = 0; i < multiplier.length; i++) {  
40.            for (int j = 0; j < multiplicand.length; j++) {  
41.                result[i + j] += (byte) (multiplier[i] * multiplicand[j]);  
42.            }  
43.            /**[29]->[9][2]进位**/  
44.            carry(result, 1 + multiplicand.length, i);  
45.        }  
46.        if (result[result.length - 1] == 0) {  
47.            byte[] resultDest = new byte[result.length - 1];  
48.            System.arraycopy(result, 0, resultDest, 0, result.length - 1);  
49.            return resultDest;  
50.        }  
51.  
52.        return result;  
53.    }  
54.  
55.    private static void carry(byte[] result, int length, int base) {  
56.        for (int i = base; i < length + base; i++) {  
57.            byte decade = (byte) (result[i] / 10);  
58.            if (decade >= 1) {  
59.                result[i + 1] += decade;  
60.                result[i] = (byte) (result[i] % 10);  
61.            }  
62.        }  
63.  
64.    }  
65.  
66.  
67.    private static byte[] digit(int original) {  
68.        List<Byte> list = new ArrayList<Byte>();  
69.        do {  
70.            list.add((byte) (original % 10));  
71.            original = original / 10;  
72.        }  
73.        while (original > 0);  
74.        byte[] digit = new byte[list.size()];  
75.        for (int i = 0; i < list.size(); i++) {  
76.            digit[i] = list.get(i);  
77.        }  
78.        return digit;  
79.    }  
80.}  

相关文章
|
Python
在dataframe中插入新的一行
在pandas中,可以使用`insert`函数在dataframe中插入新的一行。
1291 1
[✔️]AudioRelay将电脑的声音投射在手机上
[✔️]AudioRelay将电脑的声音投射在手机上
2948 0
|
11月前
|
边缘计算 Cloud Native 安全
云原生技术的未来发展趋势
云原生技术的未来发展趋势
289 1
|
人工智能 机器人 API
用AppFlow玩转通义百炼大模型应用
阿里云百炼平台提供一站式大模型开发服务,支持创建和定制应用,预置丰富插件和API。用户可以通过平台快速构建大模型应用,并利用AppFlow将其接入钉钉群聊,以AI卡片形式展示。
73812 12
|
机器学习/深度学习 Python
【视频】ARIMA时间序列模型原理和R语言ARIMAX预测实现案例
【视频】ARIMA时间序列模型原理和R语言ARIMAX预测实现案例
|
安全 数据安全/隐私保护 智能硬件
智能家电设备连接与验证的流程
智能家电设备连接与验证的流程
775 1
|
人工智能 编解码
图片无损放大-AI为图片开光
图片无损放大的, 免费的, AI加持, 全平台的开源软件, 放大后的图片是 1352X1352, 如果觉得不够大, 还可以选择第二个步骤中的 dobule 放大, 那样生成的图片就是 2704X2704
894 0
|
弹性计算 容灾 安全
阿里云服务器如何购买?三种方式可买(图文举例流程)
阿里云服务器如何购买?三种方式可买(图文举例流程)2023阿里云服务器购买流程更新,选购云服务器有两个入口,一个是选择活动机,只需要选择云服务器地域、系统、带宽即可;另一个是在云服务器页面,自定义选择云服务器配置,这种方式购买云服务器较为复杂,需要选付费方式、地域及可用区、ECS实例规格、镜像、网络、公网IP、安全组等配置,阿里云百科来阿里云服务器购买流程指南2023新版教程:
498 0
阿里云服务器如何购买?三种方式可买(图文举例流程)
|
编解码
会声会影2023专业的电脑视频剪辑工具
会声会影2023是一款专业的数字音频工作站软件,它提供强大的音频编辑和制作功能,被广泛应用于音乐创作、录音棚录制以及现场演出等领域。会声会影的最新版本会声会影2023将于2022年底发布,主要功能和新功能详述如下:
307 0
|
弹性计算 数据库 对象存储
阿里云人工客服联系方式(分享3种途径)
阿里云售后或售前可以联系人工客服,小编分享三种联系阿里云官方人工客服的方法
38604 2
阿里云人工客服联系方式(分享3种途径)