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

手把手教你用TLP350驱动IGBT:光耦隔离驱动电路完整设计教程

本文详细介绍了如何使用TLP350光耦隔离驱动电路设计IGBT驱动方案。从TLP350芯片特性分析到驱动电路架构设计,包括信号调理、自举电源和栅极控制网络,再到PCB布局优化和保护电路设计,提供了完整的实战指南。通过实测波形分析和故障排查,帮助工程师快速掌握IGBT驱动电路的设计要点和进阶技巧。

weixin_30566063的博客 826

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

Outlook日历同步全攻略:Win10+安卓+iOS三端无缝衔接(附常见问题解决)

本文提供了一份详尽的Outlook日历同步指南,帮助用户在Windows 10、安卓和iOS三端实现无缝衔接。文章深入解析了Exchange ActiveSync等核心同步原理,并给出了从账户创建到各设备(特别是华为手机)的具体配置步骤、进阶管理技巧以及针对同步失败、事件重复等常见问题的实战解决方案,旨在彻底解决跨平台日程管理的痛点。

l3m4n的博客 554

001-基础入门-Web演示源码&资源&工具箱等

小迪安全2023笔记

wushangyu32335的博客 4265

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

金现代面试题—— i++,++i, &&,&|自动装箱和自动拆箱(int,byte,float等)|取int等基本类型的最大值

public static void main(String[] args){ int i=1,j=1; if(i++==2&amp;amp;amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;amp;amp;amp;++j==2){ i=7; } System.out.println(“i=”+i+”,j=”+j); } 请给出 输出结果:

老孟嘚吧嘚 1397

URAL1091 Tmutarakan Exams

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

acmer的随记 455

STM32F407ZGT6最小系统:从原理图到PCB的实战设计与避坑指南

本文详细介绍了STM32F407ZGT6最小系统的设计与实现,从原理图到PCB布局的完整流程。重点解析了电源、时钟、复位和调试接口等核心模块的设计要点,提供了实用的PCB布局技巧和常见问题解决方案,帮助开发者避开设计陷阱,快速完成稳定可靠的STM32F407ZGT6最小系统设计。

weixin_30955617的博客 198

QCC51XX---人机接口设备协议( HID)

QCC51XX---人机接口设备协议( HID)

weixin_42162924的博客 819

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

【图像检测】基于MATLAB的火灾监测系统设计

1 简介 针对传统火灾监测系统对于大空间的室内场合和开阔的室外环境易失效的问题,提出了一种结合火灾火焰特征和烟雾特征来进行判断的数字图像型火灾监测算法.火焰颜色特征是基于RGB颜色模型中的R,G,B三基色分量和它们之间的关系来判断是否有火焰发生,烟雾模型特征是图像灰度化预处理后,基于HIS空间模型提取的,通过计算像素点与基准像素点之间距离D的大小来判断是否有火灾发生.对提出的算法进行MATLAB仿真,并和传统的基于五种算子的边缘检测算法提取火焰烟雾特征进行对比.实验结果表明,提出的火焰特征和烟雾特征提取算

qq_59747472的博客 2797

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

继电器管理策略(二)

介绍了电池管理系统中的继电器管理,包含控制和诊断

manjixingkong1234的专栏 419

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

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

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

URAL 1091. Tmutarakan Exams

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

风儿-zsj的专栏 734

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

visio安装包

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

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、付费专栏及课程。

余额充值