Ural 1009 K-based numbers

Ural 1009 K-based numbers
简单的组合计数,算是DP吧。很简单的,分“上一位数是0”和“上一位数不是0”讨论即可。同时注意到第1位不能是0。
以下是我的代码:
#include < iostream >
using   namespace  std;
long  n,k;
long  dp( long  i, long  j)
{
    
if (i == 1 return  (k - 1 ) * dp(i + 1 , 1 );
    
if (i == n)
    {
        
if (j)  return  k;
        
else   return  (k - 1 );
    }
    
if (j)  return  (k - 1 ) * dp(i + 1 , 1 ) + dp(i + 1 , 0 );
    
else   return  (k - 1 ) * dp(i + 1 , 1 );
}
int  main()
{
    
/*
    freopen("data.in","r",stdin);
    freopen("data.out","w",stdout);
    //
*/
    cin
>> n >> k;
    cout
<< dp( 1 , 1 ) << endl;
return   0 ;
}


你可能感兴趣的:(Ural 1009 K-based numbers)