給出三個整數x,y和z。你必須找到所有數字的總和,這些數字的數字只有4,5和6,它們的十進制表示至多爲十四,十進制表示的最多爲十五,十進制表示的最多爲五十六進制總和由4組成4 5 6
我現在用的概念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);
}
}
但我得到了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
@Can你解釋妳代碼中使用的邏輯代碼。 –
我對此有不同的解決方案,它使用JAVA中的字符串。 –
@丹特我已經在鏈接中使用了概念中描述的使用排列 – user5107486