小编use*_*486的帖子

由4 5 6组成的数字的总和

我们给出三个整数x,y和z.你必须找到所有数字的总和,其数字仅由4,5和6组成,十进制表示最多为x四,十进制表示最多为y五,十进制表示最多为z六

我正在使用Describe Here这个概念

我的代码:

// fact[i] is i!
    for(int i=0;i<=x;i++)
        for(int j=0;j<=y;j++)
            for(int k=0;k<=z;k++){

           int t = i+j+k;
           if(t==0) continue;
           long ways = fact[t-1];
           long pow = (long) Math.pow(10,t-1);
           long rep=0;
           if(i!=0){
               rep = fact[j]*fact[k];
               if(i>0) rep*=fact[i-1];

              o+= 4*pow*(ways/rep); 
           }

           if(j!=0){
               rep = fact[i]*fact[k];
               if(j>0) rep*=fact[j-1];

              o+= 5*pow*(ways/rep); 
           }

           if(k!=0){
               rep = fact[i]*fact[j];
               if(k>0) rep*=fact[k-1];

              o+= 6*pow*(ways/rep); 
           }

        }
Run Code Online (Sandbox Code Playgroud)

但我得到了错误的答案x=1 , y=1 and z=1我得到3315,而正确答案是3675.

请帮我找出错误.

4+5+6+45+54+56+65+46+64+456+465+546+564+645+654=3675
Run Code Online (Sandbox Code Playgroud)

algorithm math

10
推荐指数
1
解决办法
2385
查看次数

标签 统计

algorithm ×1

math ×1