题目描述
你有一组非零数字(不一定唯一),你可以在其中插入任意个0,这样就可以产生无限个数。比如说给定{1,2},那么可以生成数字12,21,102,120,201,210,1002,1020,等等。
现在给定一个数,问在这个数之前有多少个数。(注意这个数不会有前导0).
输入格式
只有1行,为1个整数n.
输出格式
只有整数,表示N之前出现的数的个数。
输入输出样例
输入 #1复制
1020
输出 #1复制
7
说明/提示
n的长度不超过50,答案不超过2^63-1.
#include#include #include #include #include #include using namespace std;#define ri register int#define ll long longll ans,c[55][55];int a[10],len,n[55],cnt;ll multiqpl(int a[],int l){ ll res=1; for(ri i=0;i<=9;i++) { res*=c[l][a[i]]; l-=a[i]; } return res;}int main(){ for(char ch=getchar();ch>='0'&&ch<='9';ch=getchar())a[n[++len]=ch-48]++; c[0][0]=1; for(ri i=1;i<=len;i++) { c[i][0]=c[i][i]=1; for(ri j=1;j