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(容斥)的更多相关文章

  1. ural 1091. Tmutarakan Exams(容斥原理)

    1091. Tmutarakan Exams Time limit: 1.0 secondMemory limit: 64 MB University of New Tmutarakan trains ...

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

    F - Tmutarakan Exams 题意 : 从 < = S 的 数 中 选 出 K 个 不 同 的 数 并 且 gcd > 1 .求方案数. 思路 :记 录 一 下 每 个 数 的 ...

  3. Ural 1091 Tmutarakan Exams

    Tmutarakan Exams Time Limit: 1000ms Memory Limit: 16384KB This problem will be judged on Ural. Origi ...

  4. 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 ...

  5. URAL - 1091 Tmutarakan Exams (简单容斥原理)

    题意:K个不同数组成的集合,每个数都不超过S且它们的gcd>1.求这样的数的个数 分析:从2开始枚举gcd,但这样会发生重复.譬如,枚举gcd=2的集合个数和gcd=3的集合个数,枚举6的时候就 ...

  6. URAL1091. Tmutarakan Exams(容斥)

    1091 容斥原理 #include <iostream> #include<cstdio> #include<cstring> #include<algor ...

  7. 1091. Tmutarakan Exams

    1091. Tmutarakan Exams Time limit: 1.0 secondMemory limit: 64 MB University of New Tmutarakan trains ...

  8. 容斥原理--计算并集的元素个数 URAL 1091

    在计数时,必须注意没有重复,没有遗漏.为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计 ...

  9. Tmutarakan Exams URAL - 1091(莫比乌斯函数 || 容斥)

    题意: 求1 - s 中 找出k个数 使它们的gcd  > 1 求这样的k个数的对数 解析: 从每个素数的倍数中取k个数  求方案数 然后素数组合,容斥一下重的 奇加偶减 莫比乌斯函数的直接套模 ...

随机推荐

  1. php学习实例3

    新闻发布管理系统 路由器action.php <!DOCTYPE html> <html> <head> <title> </title> ...

  2. java 从零开始,学习笔记之基础入门<集合>(十六)

    集合 集合:将多个元素放入到一个集合对象中去,对应的集合对象就可以用来存储多元素. Collection接口的子接口:Set接口和List接口. Map不是Collection接口的子接口. Coll ...

  3. Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较

    Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较 1.首先写一个Go语言的简单WEB程序,就返回一个HelloWord! package main import ( f " ...

  4. mysql数据库配置优化(占cpu过高问题)

    MySQL5.6的my.ini配置 提供一个MySQL 5.6版本适合在1GB内存VPS上的my.cnf配置文件(点击这里下载文件): [client] port = 3306 socket = /t ...

  5. JAVA设计模式——第 2 章 代理模式【Proxy Pattern】(转)

    什么是代理模式呢?我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道被代理人能做哪些事情不能做哪些事情吧,那就是两个人具备同一个接口,代理人虽然不能干活,但是被代理的人能干活呀. ...

  6. idea maven项目如何使用lib下得jar包

    在项目开发中,一般使用maven来管理项目,但有时还需要引用本地lib下的jar包 比如,中央仓库没有jar包.这时我们就需要引入lib下的jar包了. 1.首先在dependencies里加入本地j ...

  7. React学习笔记一:入门知识概览

    一:安装react 1:直接下载react源码包,把需要用到的js文件引入自己的页面即可. 2:BootCDN 的 React CDN 库: 在页面代码中导入即可: <head> < ...

  8. pyDes介绍

    使用参数如下(拷贝自上述提供的地址): Class initialization -------------------- pyDes.des(key, [mode], [IV], [pad], [p ...

  9. C#匿名对象在其它方法体内怎么取到相应的值(不想建立对应的类并转化的情况下)?

    public object AnonymousObj() { ", Message = "OK", Data = new {...} } } public void Ot ...

  10. Linux主流架构运维工作简单剖析

    转载:http://wgkgood.blog.51cto.com/1192594/1586259 随着IT运维的不断发展,尤其的Linux的飞速发展,越来越多的企业开始使用Linux操作系统平台,例如 ...