题面

luogu

题解

本来想练数位dp的,结果又忍不住写了组合数..

去掉一个\(0\)可以看作把\(0\)移到前面去

那么题目转化为 \(n\)有多少个排列小于\(n\)

强制某一位比\(n\)的对应位置上的数小, 后面方案组合数算一下即可

Code


#include<bits/stdc++.h> #define LL long long
#define RG register using namespace std;
template<class T> inline void read(T &x) {
x = 0; RG char c = getchar(); bool f = 0;
while (c != '-' && (c < '0' || c > '9')) c = getchar(); if (c == '-') c = getchar(), f = 1;
while (c >= '0' && c <= '9') x = x*10+c-48, c = getchar();
x = f ? -x : x;
return ;
}
template<class T> inline void write(T x) {
if (!x) {putchar(48);return ;}
if (x < 0) x = -x, putchar('-');
int len = -1, z[20]; while (x > 0) z[++len] = x%10, x /= 10;
for (RG int i = len; i >= 0; i--) putchar(z[i]+48);return ;
}
char s[55];
int a[55], b[10], C[55][55]; int main() {
//freopen(".in", "r", stdin);
//freopen(".out", "w", stdout);
scanf("%s", s);
int n = strlen(s);
for (int i = 0; i < n; i++)
a[i+1] = s[i]-'0', b[a[i+1]]++;
LL ans = 0;
for (int i = 0; i <= n; i++) C[i][i] = 1, C[i][0] = 1;
for (int i = 2; i <= n; i++)
for (int j = 1; j < i; j++)
C[i][j] = C[i-1][j-1]+C[i-1][j];
for (int i = 1; i <= n; i++) {
for (int j = 0; j < a[i]; j++)
if (b[j] > 0) {
LL s = 1;
b[j]--;
for (int k = 0, p = n-i; k < 10; p -= b[k++])
s *= C[p][b[k]];
b[j]++;
ans += s;
}
b[a[i]]--;
}
write(ans);
return 0;
}

最新文章

  1. Strus2学习Exception处理集锦(一)
  2. python学习心得第五章
  3. SqlServer常用语句参考
  4. Linux使用者管理(1)---用户账号
  5. 万能的everything彻底解决mysql问题
  6. HTML5 离线缓存详解(转)
  7. 重温Java的类加载机制
  8. php微信支付问题之 cURL error 60: SSL certificate: unable to get local issuer certificate
  9. 【NOIP2015】运输计划(二分,差分)
  10. JavaScript路线
  11. OO Unit2多线程电梯总结博客
  12. if __name__ == &#39;__main__&#39; 这段代码怎么理解???
  13. 举例跟踪linux内核系统调用
  14. 【转载】ARCHIVE_LAG_TARGET参数的作用(定时切换redo)
  15. 某公司的C#面试题
  16. day 39 jq 学习入门2
  17. python代码位置引发的错误
  18. Tutorial: Getting Started with Spring Security
  19. 关于IDENTITY_INSERT的用法介绍
  20. LeetCode39.组合总和 JavaScript

热门文章

  1. 修改Tomcat可支持get传参方式的url长度,get形式
  2. Linux3基本命令 ls,pwd,cat,echo,mv,cp,mkdir,rm,ln
  3. 算法Sedgewick第四版-第3章Searching-搜索总结
  4. python gridsearchcv 里的评价准则
  5. bootstrap图片切换效果
  6. Python基础入门-For循环
  7. Web Pages version 2兼容 Web Pages version 1的设置
  8. Spring学习整理-MyEclipse设置xml自动提示
  9. Linux下ffmpeg安装与开发配置
  10. Android使用Canvas画图