URAL1091---Tmutarakan Exams(dp)

Screenshot_2026-11-03-16-23-09-34.jpg 立即下载

University of New Tmutarakan trains the first-class specialists in mental arithmetic. To enter the University you should master arithmetic perfectly. One of the entrance exams at the Divisibility Department is the following. Examinees are asked to find K different numbers that have a common divisor greater than 1. All numbers in each set should not exceed a given number S. The numbers K and S are announced at the beginning of the exam. To exclude copying (the Department is the most prestigious in the town!) each set of numbers is credited only once (to the person who submitted it first).
Last year these numbers were K=25 and S=49 and, unfortunately, nobody passed the exam. Moreover, it was proved later by the best minds of the Department that there do not exist sets of numbers with the required properties. To avoid embarrassment this year, the dean asked for your help. You should find the number of sets of K different numbers, each of the numbers not exceeding S, which have a common divisor greater than 1. Of course, the number of such sets equals the maximal possible number of new students of the Department.
Input
The input contains numbers K and S (2 ≤ K ≤ S ≤ 50).
Output
You should output the maximal possible number of the Department’s new students if this number does not exceed 10000 which is the maximal capacity of the Department, otherwise you should output 10000.
Sample
input output

3 10

11

dp[i][j][k]前i个数选了j个数,gcd为k的方案数

/*************************************************************************
    > File Name: ural1091.cpp
    > Author: ALex
    > Mail: zchao1995@gmail.com 
    > Created Time: 2015年05月28日 星期四 15时08分59秒
 ************************************************************************/

#include <functional>
#include <algorithm>
#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <queue>
#include <stack>
#include <map>
#include <bitset>
#include <set>
#include <vector>

using namespace std;

const double pi = acos(-1.0);
const int inf = 0x3f3f3f3f;
const double eps = 1e-15;
typedef long long LL;
typedef pair <int, int> PLL;

LL dp[55][55][55];

int gcd(int a, int b) {
    return b ? gcd(b, a % b) : a;
}

int main() {
    int K, S;
    while (~scanf("%d%d", &K, &S)) {
        for (int i = 0; i <= S; ++i) {
            for (int j = 0; j <= K; ++j) {
                for (int k = 1; k <= S; ++k) {
                    dp[i][j][k] = 0;
                }
            }
        }
        dp[1][1][1] = 1;
        for (int i = 1; i < S; ++i) {
            dp[i + 1][1][i + 1] = 1;
            for (int j = 1; j <= S; ++j) {
                for (int k = 1; k <= S; ++k) {
                    if (!dp[i][j][k]) {
                        continue;
                    }
                    dp[i + 1][j][k] += dp[i][j][k];
                    int g = gcd(k, i + 1);
                    dp[i + 1][j + 1][g] += dp[i][j][k];
                }
            }
        }
        LL ans = 0;
        for (int i = 2; i <= S; ++i) {
            ans += dp[S][K][i];
        }
        if (ans > 10000) {
            ans = 10000;
        }
        printf("%lld\n", ans);
    }
    return 0;
}
研发流程后端开发工具,提示功能开发效率 后端开发工具 立即下载

相关推荐

机器人具有扰动抑制功能的有限时间基于方位角的领航者-跟随者编队控制(Matlab代码实现)

内容概要:本文档标题为《Plecs全桥LLC谐振变换器仿真模型.txt》,但实际内容并未涉及该主题的具体技术细节或仿真建模过程。相反,文档实质是一份由科研服务团队发布的跨学科资源目录,集中展示了大量基于Matlab、Simulink、Python、PSCAD等平台实现的科研项目与算法开发案例,涵盖电力系统、无人机路径规划、微电网优化、状态估计、信号处理、车间调度、图像处理、通信技术、雷达追踪、智能优化算法等多个工程技术领域。每个条目以“【】”标注研究主题,并注明“Matlab代码实现”“Python代码实现”等形式,表明其为可提供技术支持与代码资源的服务项目。文档末尾频繁出现“完整资源下载:公众号——荔枝科研社”及百度网盘链接,明确体现出其作为科研辅助服务推广与引流工具的功能属性。; 适合人群:面向电气工程、自动化、控制科学与工程、计算机科学、智能制造、新能源、航空航天、通信工程及相关交叉学科的研究生、高校教师、科研人员及企业研发工程师。; 使用场景及目标:①为科研人员提供课题选题、技术路线设计与算法实现的参考范例;②辅助学生或研究人员完成课程设计、毕业论文、项目仿真与算法复现任务;③作为第三方技术服务团队的能力展示目录,便于潜在客户快速了解其在多领域提供的定制化仿真与算法开发服务范围。; 阅读建议:此文档并非传统意义上的学术论文或技术教程,而是一份高度碎片化、广告性质浓厚的资源索引清单。读者应忽略其误导性的文件名,将其视为一个综合性科研技术服务目录,重点关注自身研究方向相关的条目,并通过文末提供的公众号或网盘链接进一步获取具体代码与资料。同时,需注意甄别资源的技术质量、原创性与适用性,避免盲目依赖外部服务。

URAL 1091. Tmutarakan Exams(容斥原理)

题目链接 题意 : 给你两个数k,s,让你找k个数,这k个数都不大于s,并且这k个数的公约数大于1。 思路 : 枚举一下素数倍数,求组合数,最后容斥原理求最终结果。 当k=3,s=20的时候 : 2 : 2 4 6 8 10 12 14 16 18 20 3 :3 6 9 12 15 18 5 :5 10 15 20 只要从每个集合里边找出k个即可,这就是用组合数了。但是会有重复的,...

weixin_30375427的博客 191

读《认知科学导论》(萨伽德) 总结

1. 作者的写作思路 本书是建立在对心智的理解采用表征与计算的方式。对心智表征-计算的理解方式是与计算机的本质相联系。计算机本质上是一个符号系统,符号系统包含两个部分,一个是符号,另一个是建立在符号上的操作。对心智采用表征-计算的方式理解,很容易与计算机建立起类比关系。同时人们在探索人工智能领域采用表征-计算方式已经取得了无数辉煌的成就,故表征-计算式现在研究的主流方法。 本书的有两个部分组成

xiaoqiangXX的专栏 3450

Ural 1091. Tmutarakan Exams(容斥原理+组合计数)

给出范围 [1,m] ,要求你从中找到 n 个数,使这 n 个数的 gcd > 1 ,但是个个数都不相同,问有几种选择 由于 n m 的范围都很小 (<=50),所以打一下小于 50 的素数表,我们可以让 gcd = 2 / 3 /4……但是 4 被 2 全包括了,所以只要统计 gcd 为素数的情况,所以又要利用容斥原理,处理 gcd 为多个质数相乘的情况,最后根据组合计数原理, m/gcd 个位置,放 n 个数,答案为。 const int N=50+5; in...

C_Dreamy的博客 523

FPGA编译加速实战:6大可落地的Vivado优化策略

FPGA编译本质上是NP-hard约束满足问题求解,而非传统软件编译;Vivado作为时序驱动的硬件实现工具链,其耗时瓶颈集中在Implementation阶段的布局布线(PnR)与逻辑优化。理解这一原理,才能跳出‘加线程’‘升版本’等表面优化,转向精准时序约束、增量编译、物理锚点控制、IP配置精简等工程级干预。这些技术手段直接作用于Vivado的Tcl执行流与底层求解空间,显著压缩搜索范围、减少无效迭代——尤其适用于Zynq/UltraScale等中大型项目(LUT > 80K、多时钟域、DDR/PCIe

weixin_34226182的博客 413

基于立创·天猛星MSPM0G3507的简易PID电机控制入门项目实战

本文详细介绍了基于立创·天猛星MSPM0G3507开发板的简易PID电机控制入门项目实战。从硬件选型、电路设计、PCB布局,到软件编程中的编码器读取、PID算法实现与调参,手把手教你完成一个带屏幕显示的电机定速与定距控制项目,是学习嵌入式开发和经典PID控制算法的绝佳实践。

weixin_42596011的博客 510

Ural 1091. Tmutarakan Exams 排列组合+容斥原理+质因数分解

1091. Tmutarakan Exams Time limit: 1.0 second Memory limit: 64 MB University of New Tmutarakan trains the first-class specialists in mental arithmetic. To enter the University you should ma

停不下的脚步 919

大模型运维实战:从GPU选型到推理服务稳定落地

大模型服务进入生产环境后,运维对象从传统进程转向GPU显存、KV Cache、推理吞吐等动态资源。显存利用率、首token延迟、并发队列深度等指标,直接影响模型服务的质量与成本。理解推理框架的内存分配机制、掌握监控告警与自动化扩容手段,是保障服务稳定的关键。这类能力广泛应用于企业私有化部署、智能客服、知识库问答等场景,帮助运维团队从被动救火转向主动容量规划与性能调优。本文围绕大模型运维的完整路线,梳理从硬件选型、推理部署到监控排障的实战经验,并算清一份真实项目的长期成本账。

weixin_29054245的博客 238

URAL1091 Tmutarakan Exams

关键词:求前s个数中k个gcd为1的数的组数 题意:求k个数a1,a2…ak,使得gcd(a1,a2…ak)>1的数的组数,其中1=< ai<=s。 解法:容斥原理。

acmer的随记 455

图像配准(Image Registration)——深度学习方法

参考:https://www.cnblogs.com/carsonzhu/p/11188574.html

m0_46483236的博客 4万+

【示波器专题】无源探头的常用附件

使用探头进行测试,我们不仅要知道探头的原理,还需要了解探头的常用附件及其使用方式,这样才能在尽可能在测试中提高效率且减少出错的概率

一点硬件 692

URAL 1091 Tmutarakan Exams

题意求NN以内的大小为KK的数集个数,满足数集内的数的gcd>1gcd>1题解设f[x]表示公约数是x的倍数的情况数,g[x]表示公约数恰好是x的情况数 有: fn=∑n|dg(d)f_n=\sum_{n|d}g(d) gn=∑n|df(d)∗μ(dn)g_n=\sum_{n|d}f(d)*\mu(\frac{d}{n}) 其中fn=(⌊Nd⌋k)f_n=\binom{\lfloor\fra

yeziqing10的博客 445

Uncaught ReferenceError: process is not defined

这个错误 Uncaught ReferenceError: process is not defined 通常出现在浏览器环境中,因为 process 是 Node.js 环境的内置对象,并不是浏览器原生支持的。因此,浏览器无法识别 process,导致该错误。在App.vue中加上以下代码就能够有效解决。

猿小白的博客 1740

URAL 1091 Tmutarakan Exams (DP或容斥)

题意给出一个K和S,求从小于S的数里取出一个K元组的gcd大于1的K元组的数量。思路可以dp做,dp的话是经典的计数问题,而且因为数据比较小写起来也比较简单,dp[i][j][k]表示枚举到i时取了j个数此时的gcd为k的个数,则dp[i+1][j+1][gcd(k,i+1)]+=dp[i][j][k],dp[i+1][j][k]+=dp[i][j][k]。 或者容斥,因为所有合数都能用素数来表示

Winterfell30' Blog 571

Oracle EBS AP 应付模块核心实现逻辑(极简骨架 + 分层拆解 + 业务流转 + 分录 + 核心表)

Oracle EBS AP应付模块采用四层逻辑架构:1)主数据层统一管控供应商基础信息;2)发票负债层通过三单匹配校验生成应付账款;3)付款核销层实现负债冲减;4)SLA层自动生成财务凭证。核心流程包括发票验证(匹配PO/收货单)、付款核销(全额/部分冲账)、会计分录自动生成(通过SLA引擎)。模块严格遵循"无匹配不负债、无验证不入账"原则,与采购、库存等模块深度集成,实现从供应商创建到付款核销的完整业务闭环,确保应付账款准确性和审计追溯能力。

金牌架构师 440

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

F - Tmutarakan Exams URAL - 1091 -莫比乌斯函数-容斥 or DP计数

F - Tmutarakan Exams 题意 : 从 < = S 的 数 中 选出 K 个 不 同 的 数 并 且 gcd > 1 。求方案数。思路 :记 录 一 下 每 个 数 的 倍 数 vector 存 储 ,最后从 2 开始 遍历 一遍每个数 ,从 他的倍数中 挑选 k个 组合数求解。但是会有重复,因为 比如 K=2,S=15时 ,2倍数 : 2 ,4 , 6,...

weixin_30357231的博客 101

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

URAL 1091. Tmutarakan Exams

http://acm.timus.ru/problem.aspx?space=1&num=1091

风儿-zsj的专栏 734

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

URAL 1091

题意: 从 s 个数里挑出 k 个, 这个 k 个数的共因子大于 1 一共有多少种方法 思路: 很裸的容斥,首先只选择小于k的质因子i,个数显然是C(s/i,k),由k>=2知道,i最多枚举到s/2,所以预处理组合数,跑一次容斥即可 #include<iostream> #include<cstdio> #include<cstring> using namespace std; typedef long long ll; int c[30][30],ans,cn

weixin_45539557的博客 163

URAL 1091 Tmutarakan Exams(容斥原理)

题目链接: URAL 1091 Tmutarakan Exams 题意: 求构造kk个不同的数,每个数不超过ss,且这些数的最大公约数大于1的方案数。方案数大于1000010000时,直接输出1000010000。 数据范围:2≤K≤S≤502 \leq K \leq S \leq50 分析: 我们只需要考虑最小非1公约数情况。假设最小非1公约数为p假设最小非1公约数为p,那么在这ss个

ramay7 653

【URAL-1091-Tmutarakan Exams】 容斥原理+组合数

URAL-1091-Tmutarakan Exams 将题意简化一下就是给你一个数s,要用1-s构造一个长度为序列保证n个数的最大公约数为1,且n个数均不相同。 我们直接构造不太好想,于是我们想如何构造出不满足情况的序列,那么就是最大公约数&gt;=2.由于这道题s,k均&lt;=50.所以我们可以枚举gcd为2-S,同样如果一个序列的gcd为4,那么他一定被gcd为2的计算过,所以我们还是只...

lajiyuan的博客 245

ural1091(莫比乌斯 容斥)

University of New Tmutarakan trains the first-class specialists in mental arithmetic. To enter the University you should master arithmetic perfectly. One of the entrance exams at the Divisibility Depar

zjy2015302395的博客 455

【URAL】1091 Tmutarakan Exams (简单容斥原理)

题目大意:从不大于s的非负数中选择k个,并且k个数的最大公约数大于1,问有多少组。 思路: 这边我们可以枚举最小公约数,那么最小公约数的个数中选择k个即为一种方案, 因为最大数不超过50. 所以枚举的最小公约数即为小于30的所有质数。{2,3,5,7,11,13,17,19,23,29} 现在可以假设选择了以最小公约数为2的序列,已经最小公约数为3的序列,可以知道,最小公约为6的序列被多

Jason 926

Tmutarakan Exams 简单的容斥定理

Tmutarakan Exams Time Limit:1000MS   Memory Limit:65536KB   64bit IO Format:%I64d & %I64u SubmitStatus Description University of New Tmutarakan trains the first-class s

vickey 720

ural 1091

题目:http://acm.timus.ru/problem.aspx?space=1&num=1091 题意:从 s 个数里挑出 k 个, 这个 k 个数的共因子大于 1 一共有多少种方法 直接暴搜,注意剪枝优化 View Code 1 typedef long long ll; 2 const int N = 60; 3 int ans,k,s; 4 boo...

weixin_30659829的博客 153
上一篇: hdu5249---KPI(二分+树状数组)
下一篇: POJ1337---A Lazy Worker(dp)
tokers
博客等级 码龄12年 71粉丝 700原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值