/ * 1がある場合、この1つが存在しなければならない すべてのケースを列挙するために、それぞれの場合の計算は、別のオペレータエクストラ * / の#include <ビット/ STDC ++ H.> 使用して 名前空間STDと、 の#define LLロングロング LL ANS 【、N-、CNT 。11 ]、F. [ 20は、] [ 11 ]; LL Calcの(){ LL RES = 1。においてlen = 0 ; のための(INT I = 1 ; I <= 9 ; I ++)LEN + = A [ I]; RES = F. [LEN]; のための(INT I = 1 ; I <= 9 ; I ++は) RES。/ = F [I]]。 以下のために(int型 I = 1 ; I <= [ 0 ]; iは++ ) RES * =(I-+ lenの1 )。 RES / = F [ 0 ]]。 リターンのres; } int型のmain(){ F [ 0 ] = 1 。 用(LL i = 1 ; iは= < 18 ; iが++)F [I] =私は[I-Fを* 1 ]。 cinを >> N; 一方、(N){ CNT [N %10 ] ++ N / = 10; } のための([ 0 ] =(CNT [ 0 ]!= 0); [ 0 ] <= CNT [ 0 ] [ 0 ] ++ ) のための([ 1 ] =(CNT [ 1!] = 0)[ 1 ] <= CNT [ 1 ] [ 1 ] ++ ) のための([ 2 ] =(CNT [ 2 ] =!0); [ 2 ] <= CNT [ 2 ]。 [ 2 ] ++ ) のための([ 3 ]!=] =(CNT [ 3 0); [ 3 ] <= CNT [ 3 ] [ 3 ] ++ ) のための([ 4 ] =(CNT [ 4 ] =!0); [ 4 ] <= CNT [ 4 ] [ 4 ] ++ ) のための([ 5 ] =(CNT [ 5 ] =!0); [ 5 ] <= CNT [ 5 ]、[ 5 ] ++ ) のための(A [ 6 ] =(CNT [ 6 ] =!0); [ 6 ] <= CNT [ 6 ]、[6 ] ++) のための([ 7 ] =(CNT [ 7 ] =!0); [ 7 ] <= CNT [ 7 ]、[ 7 ] ++ ) のための([ 8 ] =(CNT [ 8 ]! = 0); [ 8 ] <= CNT [ 8 ]、[ 8 ] ++ ) のための([ 9 ] =(CNT [ 9 ] =!0); [ 9 ] <= CNT [ 9 ]。 [ 9 ] ++ ) ANS + = CALC()。 coutの << ANS <<'\ nを" ; }