1091. Tmutarakan Exams】的更多相关文章

1091. Tmutarakan Exams Time limit: 1.0 secondMemory 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 Di…
1091. Tmutarakan Exams Time limit: 1.0 secondMemory 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 Di…
Tmutarakan Exams Time Limit: 1000ms Memory Limit: 16384KB This problem will be judged on Ural. Original ID: 109164-bit integer IO format: %lld      Java class name: (Any)   University of New Tmutarakan trains the first-class specialists in mental ari…
ural 1091 题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1091 题意是从1到n的集合里选出k个数,使得这些数满足gcd大于1 解法: 因子有2的数: 2,4,6,8,10,12,14... 因子有3的数:3,6,9,12,15,18,21... 因子有5的数:5,10,15,18,21,24... 可以看出这里求出的集合时会有重复的,得去从.可惜没有学过容斥原理.不过解决这题还是没问题的. 50以内的素因子有:2, 3, 5, 7…
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&g…
题意:K个不同数组成的集合,每个数都不超过S且它们的gcd>1.求这样的数的个数 分析:从2开始枚举gcd,但这样会发生重复.譬如,枚举gcd=2的集合个数和gcd=3的集合个数,枚举6的时候就重复了,所以对于6,10这种质因子个数为2的,要减去.而对于4,8,9这样同一质因子出现超过1次的,不用考虑(相当于莫比乌斯函数值为0). 因为K和S不大,先预处理出组合数以及每个数对应的质因子个数.然后按容斥计算答案. #include<bits/stdc++.h> using namespac…
F - Tmutarakan Exams 题意 : 从 < = S 的 数 中 选 出 K 个 不 同 的 数 并 且 gcd > 1 .求方案数. 思路 :记 录 一 下 每 个 数 的 倍 数 vector 存 储 ,最后从 2 开始 遍历 一遍每个数 ,从 他的倍数中 挑选 k个 组合数求解. 但是会有重复,因为 比如 K=2,S=15时 , 2倍数 : 2  ,4 , 6,  8, 10,  12, 14 ,   挑出了 这种情况 6 ,12,然后 从3的倍数 : 3, 6 ,9,12…
题意: 求1 - s 中 找出k个数 使它们的gcd  > 1 求这样的k个数的对数 解析: 从每个素数的倍数中取k个数  求方案数 然后素数组合,容斥一下重的 奇加偶减 莫比乌斯函数的直接套模板就好了 容斥函数为 mu[i] * -1 #include <iostream> #include <cstdio> #include <sstream> #include <cstring> #include <map> #include <…
原题: URAL 1091  http://acm.timus.ru/problem.aspx?space=1&num=1091 题意:要求找出K个不同的数字使他们有一个大于1的公约数,且所有的数字都不能大于一个指定的数字S. 解法:可以考虑每个S内的素数,此素数和它的所有倍数构成一个集合,则可以在这些集合中任意去k个元素,C(n,k)即为这种情况下的方法种数,比如K = 3,S = 10, 则可以形成3个集合: {2,4,6,8,10} , {3,6,9}, {5,10} ,第一个集合C(5,…
1091 容斥原理 #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<stdlib.h> #include<vector> using namespace std; ],g,f[],q[],o,vis[],pa[],n,kk; #define LL long long void init() { int i,j; ;…