codeforce 991E (组合数递归搜索)

NYOJ 32 组合数 dfs 神搜枚举所有的情况即可,题目: 组合数 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)个数的所有组合。 输入 输入n、r。 输出 按特定顺序输出所有组合。 特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。 样例输入 阅读详情

题目链接:点击打开链接

给出小明在迷糊的时候看到的车牌号数字,和真实数字相比:

①真实出现的数字,小明都看到了

②小明只可能把同一个数字看多,不可能看少

③车牌号没有前导零

问真实的数字有可能有多少种情况

先把每个数字出现的次数记录下来,这就是在搜索时每个数字取到的上限

从0到9遍历(相当于10层循环,在这里用递归的方式实现,每层循环的遍历次数即为该层数字出现的次数,代表取多少个这个数)

在最后一层统计用当前这些数字能组成合法数字的个数 ans=总共数字总和的阶乘/(∏每个数字出现次数的阶乘)

#include<iostream>
#include<cstdio>
#include<vector>
#include<set>
#include<map>
#include<string.h>
#include<cmath>
#include<algorithm>
#include<queue>
#include<stack>
#define LL long long
#define mod 1000000007
#define inf 0x3f3f3f3f
#define sqr(a) (a)*(a)
#define For(i,m,n) for(int i=m;i<=n;i++)
#define Dor(i,n,m) for(int i=n;i>=m;i--)
#define lan(a,b) memset(a,b,sizeof(a))
#define maxn 100010

using namespace std;

LL num[10];
LL fact[20];
LL nownum[10];
LL ans;

void init()
{
    lan(num,0);
    lan(fact,0);
    lan(nownum,0);
    fact[0]=1;
    for(int i=1;i<=19;i++)
        fact[i]=i*fact[i-1];
}

LL cal()
{
    LL tem=0;
    for(int i=0;i<=9;i++)
        tem+=nownum[i];
        //printf("%lld\n",tem);
    tem=fact[tem];
        //printf("%lld\n",tem);
    for(int i=0;i<=9;i++)
    {
        tem/=fact[nownum[i]];
    }
        //printf("%lld\n",tem);
    return tem;
}

void pou(int x)
{
   // printf("x=%d\n",x);
    if(x>9)
    {
        ans+=cal();
        //printf("ans=%lld\n",ans);
        if(nownum[0]>=1)
        {
            nownum[0]--;
            ans-=cal();
            nownum[0]++;
       // printf("ans=%lld\n",ans);
        }
        return;
    }
    if(num[x])
    {
        for(int i=1;i<=num[x];i++)
            nownum[x]=i,pou(x+1);
    }
    else
        pou(x+1);
}

int main()
{
    LL n;
    while(~scanf("%lld",&n))
    {
        init();
        ans=0;
        while(n)
        {
            num[n%10]++;
            n/=10;
        }
        pou(0);
        printf("%lld\n",ans);
    }
    return 0;
}

浙江大学Fast-Lab从0制作自主空中机器人公开课教程补充及部分注意事项(适用于ubuntu系统和ROS零基础) 浙江大学Fast-Lab从0制作自主空中机器人公开课纯萌新补充(适用于从没接触过ubuntu系统),记录了一些自己不会的地方以及踩过的坑 阅读详情

相关推荐

别再只调OpenCV参数了!手把手教你用Python bm3d库搞定图像去噪(附完整代码与效果对比)

本文详细介绍了BM3D算法在图像去噪中的高级应用,通过Python bm3d库实现超越OpenCV传统方法的去噪效果。文章包含完整代码示例、参数调优技巧及工程化应用场景,帮助开发者掌握这一被称为'传统方法天花板'的技术,显著提升图像信噪比和细节保留能力。

weixin_28362173的博客 366

搜索之全排列和组合数

全排列和组合数:给定数 n 和 m,表示从 1 到 n 中随机抽取 m 个元素(区分顺序) 要求你打印输出所有的情况及总的个数

qq_62092806的博客 455

S.BUS协议及编解码,C语言源码

1、简介 SBUS本质是一种串口通信协议,采用100K的波特率,8位数据位,两位停止位,偶效验,即8E2的串口通信。 值得注意的有三点: 1.SBUS采用负逻辑,所以无论接收还是发送都要进行硬件取反(注意,一定要硬件取反),电路如下 这是我在网上看资料时看到的电路,实际上我用的是下面这个电路 2.SBUS有两种模式, a.高速模式:每4ms发送一次 b...

qq_31232793的博客 1万+

nyoj32---组合数

组合数 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)个数的所有组合。 输入输入n、r。 输出按特定顺序输出所有组合。 特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。 样例输入 5 3 样例输出 543 542 541 532

zhenzhen95的博客 333

Hifiasm参数调优实战:当N50不理想时的7个排查方向与解决方案

本文详细解析了Hifiasm参数调优实战,针对基因组组装中N50不理想的7个排查方向与解决方案。通过调整--hom-cov、-D、-N等核心参数,结合HiFi数据和参考基因组分析,有效提升组装质量。文章以猪毛菜基因组为例,展示了从2.1MB到4.3MB的N50优化过程,为生物信息学研究者提供实用指南。

weixin_30642561的博客 425

保姆级教程:Halcon 3D点云匹配与差异分析避坑指南(从采样到可视化)

本文提供了一份详细的Halcon 3D点云匹配与差异分析实战指南,涵盖从模型准备到可视化的全流程。重点解析了STL文件读取单位误区、点云采样密度优化、表面模型创建技巧以及差异分析的专业手法,帮助用户避开常见陷阱,提升工业检测效率与精度。

weixin_33728268的博客 402

排序:搜索/组合数

题目传送门(loj) 看到我这个标题其实就想吐槽了。搜索? 其实是个水题,但放到考试里就不水了。 看完题目,扑面而来的二进制气息,让人嗅到线段树的气味 扯淡!虽说的确有人打了一个线段树。 对于30%的数据,n<=4,纯暴力,枚举所有操作,枚举所有的可能位置。 n>5输出n!或(n-1)!能骗15分直接让分数增加一半 咳咳,说正解,对于全部数据1<=n<=12,...

weixin_30416497的博客 139

ECC密码的加密和解密(附带代码实现)

ECC,全称Elliptic Curve Cryptography,是椭圆曲线密码学。这是一种公钥加密技术,其安全性基于椭圆曲线离散对数问题,被广泛应用于信息安全领域。ECC的主要优势在于,相较于RSA和DSA等其他传统的公钥密码体系,它能够在提供相同安全级别的情况下,使用更短的密钥,从而减少计算量和存储空间的需求。例如,一个256位的ECC密钥提供的安全性可以与3072位的RSA密钥或DSA密钥相媲美。ECC的主要应用领域包括SSL安全证书、安全电子邮件、移动设备安全、物联网设备安全等。

xixixi7777的博客 8271

hdu 1342 Lotto(组合数搜索)

Lotto Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3083    Accepted Submission(s): 1464 Problem Description In a Lotto I have ev

ninesun的博客 372

知识图谱本体建模之RDF、RDFS、OWL详解

(一)知识图谱本体建模之RDF、RDFS、OWL详解 1.语义网体系 知识图谱于2012年由Google提出,并不是新概念,而是由语义网络(Semantic Network)衍生而来。语义网络由相互连接的节点和边组成,节点表示概念或者对象,边表示他们之间的关系。RDF,RDFS与OWL都是基于语义网的知识表示框架,在节点和边的取值上做了约束,制定了统一标准,为多源数据的融合提供了便利。RDF,RDFS/OWL 属于语义网技术栈,它们的提出,使得语义网克服了语义网络的缺点。其语义网技术栈如下所示。 2.RD

周周的专栏 1万+

汽车UDS诊断详解及Vector相关工具链使用说明——1.1 应用层协议整体介绍

本文我们先从整体的维度来介绍一下应用层协议,每个UDS服务都遵循本文中的协议。 一、SI(Service ID) SI是UDS指令的第一个字节,我们第一篇文章中提到的10等服务就是指这个服务的SI=0x10,它是服务的标识,每个服务的SI都是唯一的。 ...

weixin_42967006的博客 5474

【dfs 组合数】code forces 991E Bus Number

【dfs 组合数】code forces 991E Bus Number 【题目链接】 题目内容 给一个看到的数n(1&amp;lt;=n&amp;lt;=1e18),无前导0,求实际的数x有多少种可能。 n与x的关系是, 1.n中出现的数,x中也出现。 2.x中任何一个数出现的次数不超过其在n中出现的次数。 解题思路 1e18范围内最多就只有19个数,先把0,1,2……的数量都统计出...

xuziling_的博客 287

HTML金色流星雨(完整代码)

HTML实现金色流星雨动态效果的完整代码。

AIGC 992

Codeforces 991E. Bus Number

题目:点击打开链接题意:题意:给你一个数字序列A(长度不超过18位),问有多少个序列B满足①A中所有数字都一定要在B中出现过;②B中所有数字也一定要在A中出现过;③序列B不能以0开头分析:爆搜所有数字出现情况,然对于每种情况求出非0开头的全排列数量1、记录每个数字出现的次数cnt[i]2、将出现过的数字i从1到cnt[i]遍历。(i from 0 to 9)3、得到要使用的数字次数数组tp[]。4...

常胜将军的博客 1058

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

CodeForces怎么查找一道题

cf查找题目,直接先随便进入一道题的页面,然后改地址栏里面的网址!

ros275229的博客 2725

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

CodeForces 991 E.Bus Number (dfs+排列组合)

题意: 给一个数字串A,要求拆解数字串A构造数字串B,满足: 1.A中出现过的数字在B中至少出现一次(假设A中有3个6,那么B中可以有1-3个6)。 2.B不含前导0 问一共有多少种不同的B 例如,给定串A=2028 则B的方案有:208, 280, 802, 820, 2028, 2082, 2208, 2280, 2802, 2820, 8022, 8202, 8220,共13种 思路: 先计...

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 493

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

深搜-组合数

组合数 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 找出从自然数1、2、… 、n(0 < n < 10)中任取r(0 < r <= n)个数的所有组合。 输入 输入n、r。 输出 按特定顺序输出所有组合。 特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。 样例输入 5 3 样例输

wy的点滴 1243

NYOJ 32 组合数 (深搜DFS)

组合数 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)个数的所有组合。 输入输入n、r。 输出按特定顺序输出所有组合。 特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。 样例输入 5 3 样例输出 543 542 541 532

jianjun的专栏 1099

组合数的输出(搜索回溯法)

排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r≤n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数。 现要求你用递归的方法输出所有组合。 例如n=5,r=3,所有组合为: 1 2 3 1 2 4 1 2 5 1 3 4 1 3 5 1 4 5 2 3 4 2 3 5 2 4 5 3 4 5 【输入】 一行两个...

weixin_45608039的博客 1081

CodeForces ~ 991E ~ Bus Number (二进制枚举 + 组合数学 or DFS)

题意 Vasya模糊的记得公交车车牌号码为n≤1018n≤1018n≤10^{18},但是他不会漏掉某个数字,号码不允许以0开头,问可能的号码种数。 比如2028,可能的号码有208,280,802,820,2028,2082,2208,2280,2802,2820,8022,8202,8220。 但028和128都是不合法的。 思路 知道这个以后就可以暴力了,二进制...

张松超的博客 770

CodeForces ~ 991D ~ Bishwock(贪心 + 模拟)

题意 2*n的地图,‘X’为墙,‘0’为空地,问最多能放多少个‘L’? ‘L’可以旋转。 思路 如果当前列为两个0,优先往左边放,然后往右边放。注意往左放完之后就不能往右边放了。 #include &amp;lt;bits/stdc++.h&amp;gt; using namespace std; string a[2]; int main() { cin &amp;gt;&amp;gt; a[0] &amp;gt;...

张松超的博客 691

codeforces1194F(组合数前缀和)

题目描述 题目大意 有n个物品,拿走每个物品需要ti或ti+1的时间(二者等概率发生),只能按顺序拿,求在T时间内期望拿走的物品个数。 前言 由于是第一次爆肝CF,网速+手速导致了E题没写完,F题没想出来 其实前6题还是很清真的 题解 显然分别考虑每个物品的期望贡献,用sum[i]表示t[i]的前缀和 一个物品产生的贡献为1*期望被拿到的概率 而概率=∑j=1min(T−sum[i],i)Ci...

某司机的黑车 1056

(CodeForces) D. Kilani and the Game (搜索)

视频讲解戳这里 传送门 题目大意:一个n*m的图,有空格子'.',也有障碍物'#',也有各个玩家的城堡,编号对应着玩家的编号1,2,3.....;每个玩家轮流开始,有他城堡的地方就可以向上下左右扩散,而且分别有一个扩散的速度si,也就是一次可以往外扩散si层,当所有玩家都不能动时,问各个玩家所有的城堡数。 解题思路:思路还是很清晰的,就是每一轮对每一个玩家宽搜一次,每个玩家宽搜si层,往外宽...

一只不争气的蒸汽机的博客 455

Codeforces Round #369 (Div. 2) A B 两水题 编码能力

A题: 水。。直接代码: #include #include #include #include #include using namespace std; string save[1010]; int main(){ int n,i,j; scanf("%d",&n); string t; int flag = false;

kyoma的博客 500

codeforce 9C 找规律的思维题

http://vjudge.net/contest/view.action?cid=47681#problem/C

ACM,再见! 1327

CF991B Getting an A

原题链接:http://codeforces.com/contest/991/problem/B Getting an A Translator’s note: in Russia’s most widespread grading system, there are four grades: 5, 4, 3, 2, the higher the better, roughly corre...

ShadyPi的IT笔记 447
上一篇: hdu 4821(字符串哈希)
下一篇: hdu 6333 莫队,组合数
Dale_zero
博客等级 码龄9年 10粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值