相关疑难解决方法(0)

如何有效地将数字中的每个数字相乘

我想将一个数字中的每个数字相乘.

例如

515 would become 25(i.e 5*1*5)
10 would become 0(i.e 1*0)
111111 would become 1(i.e 1*1*1*1*1*1)
Run Code Online (Sandbox Code Playgroud)

我用这个代码来做

public static int evalulate(int no)
{
    if(no==0)return 0;
    int temp=1;

    do
    {
        temp=(no%10)*temp;
        no=no/10;
    }while(no>0);

    return temp;
}
Run Code Online (Sandbox Code Playgroud)

问题是我想评估大约10亿这样的数字

for(int i=0;i<1000000000;i++)evaluate(i);
Run Code Online (Sandbox Code Playgroud)

这需要我的处理器大约146秒.我想在秒钟内评估它.

那么,是不是可以使用一些优化的代码shift,and,or运营商,这样我可以降低评估时间不使用多线程并行或它

谢谢

language-agnostic math

4
推荐指数
2
解决办法
1857
查看次数

标签 统计

language-agnostic ×1

math ×1