项目-欧拉--问题20 [英] Project-Euler -- Problem20

查看:40
本文介绍了项目-欧拉--问题20的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我以为我解决了这个问题,但程序输出"0"。我看不出有什么问题。感谢您的帮助。

问题:

n!表示n×(n−1)×...×3×2×1

例如,10!=10×9×...×3×2×1=3628800,其和 数字10中的数字!是3+6+2+8+8+0+0=27。

求数字100的位数和!

package projecteuler;

public class problem20 {

    public static void main(String[] args) 
    {
        int sayi=0;
        int carpim=1;
        for(int i=100;i>=1;i--)
        {
            carpim*=i;  
        }
        String carp=""+carpim;
        int[] dizi = new int[carp.length()];
        String[] dizis=new String[carp.length()];

        for(int i=0;i<carp.length();i++)
        {
            dizis[i]=carp.substring(i);
        }

        for(int i=0;i<carp.length();i++)
        {
            dizi[i]=Integer.parseInt(dizis[i]);
            sayi+=dizi[i];
        }
        System.out.println(sayi);
    }
}   

推荐答案

100!93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000 ,这超出了int的有效范围(大得多)。请尝试使用BigInteger。为帮助您入门,

BigInteger carpim = BigInteger.ONE;
for (int i = 100; i >= 1; i--) {
    carpim = carpim.multiply(BigInteger.valueOf(i));
}
System.out.println(carpim);

其输出为前面提到的数字。

这篇关于项目-欧拉--问题20的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆