ural 1091. Tmutarakan Exams(容斥)
http://acm.timus.ru/problem.aspx?
space=1&num=1091
从1~s中选出k个数,使得k个数的最大公约数大于1,问这种取法有多少种。
(2<=k <= s<=50)
同素数四元组问题类似,能够參考http://blog.csdn.net/u013081425/article/details/40653895
仅仅只是这里是选出k个。不是4个。
#include <stdio.h>
#include <iostream>
#include <map>
#include <set>
#include <bitset>
#include <list>
#include <stack>
#include <vector>
#include <math.h>
#include <string.h>
#include <queue>
#include <string>
#include <stdlib.h>
#include <algorithm>
#define LL __int64
//#define LL long long
#define eps 1e-9
#define PI acos(-1.0)
using namespace std;
const int maxn = 100010; int k,s;
int num[55];
int prime[] = {15,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47};
int cnt[55];
LL c[55][55]; void init()
{
memset(c,0,sizeof(c));
for(int i = 1; i <= 25; i++)
{
for(int j = 0; j <= i; j++)
{
if(j == 0 || j == i)
c[i][j] = 1;
else if(j == 1)
c[i][j] = i;
else
c[i][j] = c[i-1][j-1] + c[i-1][j];
}
}
} void dfs(int st, int val, int num)
{
if(val > 50) return;
cnt[val] = num&1 ? 1 : -1;
for(int i = st; i <= prime[0]; i++)
{
if(prime[i]*val > 50)
break;
dfs(i+1,val*prime[i],num+1);
}
} int main()
{
init();
memset(cnt,0,sizeof(cnt));
dfs(1,1,0);
while(~scanf("%d %d",&k,&s))
{
for(int d = 2; d <= s; d++)
{
num[d] = s/d;
} LL ans = 0; for(int d = 2; d <= s; d++)
{
if(num[d] < k)
break;
if(cnt[d])
{
ans += cnt[d]*c[num[d]][k];
}
}
if(ans >= 10000)
printf("10000\n");
else
printf("%I64d\n",ans);
}
return 0;
}
ural 1091. Tmutarakan Exams(容斥)的更多相关文章
- ural 1091. Tmutarakan Exams(容斥原理)
1091. Tmutarakan Exams Time limit: 1.0 secondMemory limit: 64 MB University of New Tmutarakan trains ...
- F - Tmutarakan Exams URAL - 1091 -莫比乌斯函数-容斥 or DP计数
F - Tmutarakan Exams 题意 : 从 < = S 的 数 中 选 出 K 个 不 同 的 数 并 且 gcd > 1 .求方案数. 思路 :记 录 一 下 每 个 数 的 ...
- Ural 1091 Tmutarakan Exams
Tmutarakan Exams Time Limit: 1000ms Memory Limit: 16384KB This problem will be judged on Ural. Origi ...
- ural 1091. Tmutarakan Exams 和 codeforces 295 B. Greg and Graph
ural 1091 题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1091 题意是从1到n的集合里选出k个数,使得这些数满足gcd大于1 ...
- URAL - 1091 Tmutarakan Exams (简单容斥原理)
题意:K个不同数组成的集合,每个数都不超过S且它们的gcd>1.求这样的数的个数 分析:从2开始枚举gcd,但这样会发生重复.譬如,枚举gcd=2的集合个数和gcd=3的集合个数,枚举6的时候就 ...
- URAL1091. Tmutarakan Exams(容斥)
1091 容斥原理 #include <iostream> #include<cstdio> #include<cstring> #include<algor ...
- 1091. Tmutarakan Exams
1091. Tmutarakan Exams Time limit: 1.0 secondMemory limit: 64 MB University of New Tmutarakan trains ...
- 容斥原理--计算并集的元素个数 URAL 1091
在计数时,必须注意没有重复,没有遗漏.为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计 ...
- Tmutarakan Exams URAL - 1091(莫比乌斯函数 || 容斥)
题意: 求1 - s 中 找出k个数 使它们的gcd > 1 求这样的k个数的对数 解析: 从每个素数的倍数中取k个数 求方案数 然后素数组合,容斥一下重的 奇加偶减 莫比乌斯函数的直接套模 ...
随机推荐
- springboot项目中报错:listener does not currently know of SID given in connect descriptor
springboot项目中报错:listener does not currently know of SID given in connect descriptor 出现这个问题的原因是SID写错了 ...
- How to check WWN and Multipathing on Windows Server
There are many ways to find the World Wide Name (WWN) of fibre channel HBA connected to windows serv ...
- 树莓派通过GPIO控制步进电机
一.接线方式与GPIO调用方法: 电源接入+5v和GND In1-4分别接GPIO1-4 正转时,GPIO1-4分次传入:[1,0,0,0],[sleep],[0,1,0,0],[sleep],[0, ...
- Linux中使用GoAccess进行日志实时监控
一.用法命令: goaccess access_log -o /var/www/html/report.html --real-time-html 说明:请先安装Httpd和Goaccess 二.效果 ...
- angularjs的config和interceptor - session注入
config 这个要从config的正确使用说起,也许你想在config某个provider的时候注入$rootscope, 但是这是不允许的,我们细看下面的特性 session注入 每个请求自带se ...
- SSH使用Slf4j
1. Slf4j的使用 在上一篇随笔:SSH使用Log4j的基础上配置. (1)导入两个文件:slf4j-api-1.5.8.jar和slf4j-log4j12-1.5.8.jar. (2)在需要日志 ...
- Grunt、Gulp和Webpack对比
1.Grunt处理Sass转换成CSS过程 2.Gulp处理Sass转换成CSS过程 3.Webpack执行原理 4.区别 (1)grunt和gulp都类似于webapck的中的scripts,属于任 ...
- java 线程池线程忙碌且阻塞队列也满了时给一个拒接的详细报告
线程池线程忙碌且阻塞队列也满了时给一个拒接的详细报告.下面是一个自定义的终止策略类,继承了ThreadPoolExecutor.AbortPolicy类并覆盖了rejectedExecution方法把 ...
- 基于酷Q的工作秘书机器人
代码地址如下:http://www.demodashi.com/demo/14617.html 环境准备 名称 版本 Jdk 8 groovy 2.4.12 gradle 4.6 酷Q 5.12.3A ...
- Cmake编译SDL2
cmake -G"NMake Makefiles" && nmake 中出现了以下这个RC资源编译器报告的错误: invalid language id when ...