洛谷P2518 [HAOI2010]计数
2024-09-08 11:29:37
题目描述
你有一组非零数字(不一定唯一),你可以在其中插入任意个0,这样就可以产生无限个数。比如说给定{1,2},那么可以生成数字12,21,102,120,201,210,1002,1020,等等。
现在给定一个数,问在这个数之前有多少个数。(注意这个数不会有前导0).
输入输出格式
输入格式:
只有1行,为1个整数n.
输出格式:
只有整数,表示N之前出现的数的个数。
输入输出样例
说明
n的长度不超过50,答案不超过2^63-1.
题解
挺裸的数位dp(虽然我并不会)
懒得写了,直接贴一下->这里
//minamoto
#include<iostream>
#include<cstdio>
#define ll long long
using namespace std;
const int N=;
int a[N],v[N],n;ll c[N][N],ans;
ll gc(int n,int m){
if(c[n][m]) return c[n][m];
if(m==) return n;
if(m==||m==n) return ;
if(m>n) return ;
c[n][m]=gc(n-,m)+gc(n-,m-);
return c[n][m];
}
ll calc(){
ll res=;
int m=n;
for(int i=;i<;++i) if(a[i]) res*=gc(m,a[i]),m-=a[i];
return res;
}
int main(){
//freopen("testdata.in","r",stdin);
char ch;
while(cin>>ch)if(isdigit(ch))v[++n]=ch-,a[v[n]]++;
int nn=n;
for(int i=;i<=nn;++i){
--n;
for(int j=;j<v[i];++j)
if(a[j]){--a[j],ans+=calc(),++a[j];}
--a[v[i]];
}
printf("%lld\n",ans);
return ;
}
最新文章
- Canvas与Image互相转换
- Java 时间日期系列目录
- JS--传统事件模型的问题
- Tomcat自动启动脚本
- securecrt简介
- 10招搞定web设计风格指南
- 基于visual Studio2013解决面试题之0510连续数之和
- CSS绘制简单图形
- 用Go自己实现配置文件热加载功能
- OpenCV Python教程(1、图像的载入、显示和保存)
- 项目Alpha冲刺(团队)-第二天冲刺
- 学会使用box-sizing布局
- luogu P1064|| 01背包||金明的预算
- zabbix3.0监控centos当主机cpu使用率超过90%的时候报警
- 【Linux高级驱动】网卡驱动分析
- 【每日一题】 UVA - 1588 Kickdown
- Java异常及错误
- 用visual studio 2017来调试python
- JSP_运维_JSP项目部署到server(适合0经验新手)
- 统一处理jquery ajax请求过程中的异常错误信息的机制
热门文章
- java代码。从键盘输入次数。可控制的
- 并集(union和union all的区别)、交集、差集、全连接
- 解决webpack因新版本打包失败问题--ERROR in multi ./src/main.js ./dist/bundle.js
- wp8安装SSL证书
- 2015.1.10 解决DataGridView SelectionChanged事件自动触发问题
- Profile配置
- 监控和安全运维 1.2 cacti安装
- JS中substring()方法(用于提取字符串中介于两个指定下标之间的字符)
- FAILED: Execution Error, return code 2 from org.apache.hadoop
- oracle create user &;tablespace &; imp