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 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
Problem Author: Stanislav Vasilyev
Problem Source: USU Open Collegiate Programming Contest March'2001 Senior Session

2000–2016 Timus Online Judge Team. All rights reserved.

思路:和http://www.cnblogs.com/zzuli2sjy/p/5467008.html一样;

  1 #include<stdio.h>
2 #include<string.h>
3 #include<iostream>
4 #include<algorithm>
5 #include<queue>
6 using namespace std;
7 typedef long long LL;
8 bool prime[100];
9 int ans[100];
10 int coutt[10000];
11 LL dp[60][60];
12 int ask[100];
13 int id[100];
14 queue<int>que;
15 int main(void)
16 {
17 int i,j,k,p,q;
18 dp[0][0]=1;
19 dp[1][0]=1;
20 dp[1][1]=1;
21 for(i=2; i<=60; i++)
22 {
23 for(j=0; j<=60; j++)
24 {
25 if(j==0||i==j)
26 {
27 dp[i][j]=1;
28 }
29 else dp[i][j]=dp[i-1][j-1]+dp[i-1][j];
30 }
31 }
32 for(i=2; i<=10; i++)
33 {
34 if(!prime[i])
35 {
36 for(j=i; i*j<=50; j++)
37 {
38 prime[i*j]=true;
39 }
40 }
41 }
42 int cnt=0;
43 for(i=2; i<=50; i++)
44 {
45 if(!prime[i])
46 {
47 ans[cnt++]=i;
48 }
49 }
50 while(scanf("%d %d",&p,&q)!=EOF)
51 { int s;
52 memset(coutt,0,sizeof(coutt));
53 for(s=2; s<=q; s++)
54 {
55 int cc=s;
56 int flag=0;
57 int t=0;
58 while(cc>1)
59 {
60 if(cc%ans[t]==0&&flag==0)
61 {
62 flag=1;
63 que.push(ans[t]);
64 cc/=ans[t];
65 }
66 else if(cc%ans[t]==0)
67 {
68 cc/=ans[t];
69 }
70 else
71 {
72 t++;
73 flag=0;
74 }
75 }
76 int vv=0;
77 while(!que.empty())
78 {
79 ask[vv++]=que.front();
80 que.pop();
81 }
82 for(i=1; i<=(1<<vv)-1; i++)
83 {
84 LL sum=1;
85 int dd=0;
86 for(j=0; j<vv; j++)
87 {
88 if(i&(1<<j))
89 {
90 dd++;
91 sum*=ask[j];
92 }
93 }
94 id[sum]=dd;
95 coutt[sum]++;
96
97 }
98 }
99 LL summ=0;
100 for(i=2; i<=50; i++)
101 {
102 if(id[i]%2&&coutt[i]>=p)
103 {
104 summ+=dp[coutt[i]][p];
105 }
106 else if(coutt[i]>=p)summ-=dp[coutt[i]][p];
107 }if(summ>=10000)summ=10000;
108 printf("%lld\n",summ);
109 }
110 return 0;
111 }

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. Ural 1091 Tmutarakan Exams

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

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

  4. ural 1091. Tmutarakan Exams(容斥)

    http://acm.timus.ru/problem.aspx? space=1&num=1091 从1~s中选出k个数,使得k个数的最大公约数大于1,问这种取法有多少种. (2<=k ...

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

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

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

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

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

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

  8. 2014 Super Training #3 H Tmutarakan Exams --容斥原理

    原题: URAL 1091  http://acm.timus.ru/problem.aspx?space=1&num=1091 题意:要求找出K个不同的数字使他们有一个大于1的公约数,且所有 ...

  9. URAL1091. Tmutarakan Exams(容斥)

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

随机推荐

  1. KeepAlived双主模式高可用集群

    keepalived是vrrp协议的实现,原生设计目的是为了高可用ipvs服务,keepalived能够配置文件中的定义生成ipvs规则,并能够对各RS的健康状态进行检测:通过共用的虚拟IP地址对外提 ...

  2. 非标准的xml解析器的C++实现:二、解析器的基本构造:语法表

    解析器的目的:一次从头到尾的文本遍历,文本数据 转换为 xml节点数据. 这其实是全世界所有编程语言编译或者转换为虚拟代码的基础,学会这种方法,发明一种编程语言其实只是时间问题,当然了,时间也是世界上 ...

  3. python APScheduler模块

    简介 一般来说Celery是python可以执行定时任务, 但是不支持动态添加定时任务 (Django有插件可以动态添加), 而且对于不需要Celery的项目, 就会让项目变得过重. APSchedu ...

  4. academy

    academy at/in school都行,academy一般用at. The word comes from the Academy in ancient Greece, which derive ...

  5. 13. 搭建arm-linux-gcc交叉编译环境

    1.下载工具并解压 下载路径  http://www.arm9.net/download.asp 将 arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz 拷贝到 Linux ...

  6. flink-----实时项目---day07-----1.Flink的checkpoint原理分析 2. 自定义两阶段提交sink(MySQL) 3 将数据写入Hbase(使用幂等性结合at least Once实现精确一次性语义) 4 ProtoBuf

    1.Flink中exactly once实现原理分析 生产者从kafka拉取数据以及消费者往kafka写数据都需要保证exactly once.目前flink中支持exactly once的sourc ...

  7. 关于浏览器,从输入URL到呈现页面过程!(主讲TCP/IP协议)

    一.文本对话--从请求到响应 我们在浏览器中输入一个 URL,回车之后便会在浏览器中观察到页面内容.实际上这个过程是: (1)浏览器向网站所在的服务器发送了一个 Request(请求) (2)网站服务 ...

  8. vim中搜索指定单词(不加前后缀)

    \< : 搜索内容作为单词开头 \> : 搜索内容作为单词结尾 一起用即为将搜索内容指定为whole word e.g. : word_suffix word 如果用/word来搜索则两个 ...

  9. weak和拷贝

    weak/拷贝 1. weak 只要没有strong指针指向对象,该对象就会被销毁 2. 拷贝 NSString和block用copy copy语法的作用 产生一个副本 修改了副本(源对象)并不会影响 ...

  10. Spring Boot中使用模板引擎Thymeleaf

    一.Thymeleaf简介 Thymeleaf[taɪm lif],百里香叶,是一个流行的模板引擎,该模板引擎采用Java语言开发.Java中常见的模板引擎有Velocity.Freemaker.Th ...