数论
wlhz2017
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #828E 1744E Divisible Numbers
题意给abcd 求满足a<x<=cb<y<=d且xy%(ab)=0思路a的因子a1a2设x为a1的倍数 y为a2倍数b也类似 b1 b2枚举a1 滑动窗口 计算x 能对应的b1区间得到对应的b2区间 b2把 bd处理成区间看新区间能否有a2的倍数原创 2022-10-31 16:19:21 · 91 阅读 · 0 评论 -
Codeforces Round #828D CF1744D Divisibility by 2^n
数组长度n 你可以给ai乘一次i最后要求mul(a)被2^n整除 最小操作次数统计一下初始2的因子数然后算1~n里面 每个数贡献2的数量对于2幂数x=2^k 有( n/x+1)/2个原创 2022-10-31 12:51:47 · 206 阅读 · 0 评论 -
Educational Codeforces Round 138D 1749D. Counting Arrays
题意 原题说法比较绕正整数数组n每次可以移出一个数组一个数ai 满足 i和ai互素(gcd1) 然后后面的数左移 直到全部移除数组移空的方案数不唯一 视为特殊数组求长度小于n(3e5)值域范围m(e12)的特殊数组个数思路题目转化一下因为第一个位置一直可以移除所以方案唯一的数组很难达成方案唯一实际上 要求ai需要和小于i大于1的数全都不互素 才能不被提前消除所以ai必须是2~i的lcm的倍数更新lcm 算出来可能数 用总的sum(m^i )去减就行了原创 2022-10-26 16:52:49 · 121 阅读 · 0 评论 -
Codeforces Round #829B CF1753B Factorial Divisibility
问数组a,sum(a!)%(x!)==0首先大于x的a无需考虑 会被约掉低于的 可以逐渐合并 1!+1! = 2!2!+2!+2!=3! 看能否合并成多个 x!map计数统计/ sort一下 从小到大扫一遍即可实际上有个前提 是合并剩余的部分 一定会小于x! 比如 4! + 4! + 4! + 3! + 3! < 5!因为5! = 4!+4!+4!+4!+4! > 4! +4! +4! + 4! + 3!+3! +3! + 2! + 2! + 1!阶乘这种形式 如果右原创 2022-10-24 13:44:24 · 116 阅读 · 0 评论 -
poj3735 Training little cats
题意为有n只猫 而你有m次操作 每次操作分k个步骤 每个步骤有3种选择1:给第i个猫a个花生2:让第i个猫把它所有的花生都吃掉3:交换两个猫的花生第一眼看过去以为是水题 后来发现m很大 大到o(n)都会t掉 所以就需要简化操作 用矩阵 可以将k个步骤整合成一个步骤 对于1 2 3只要构造 如下的矩阵 就可以达到相应的功能整合成一个矩阵后 再利用矩阵快速幂来求就可以了原创 2015-07-20 21:01:39 · 282 阅读 · 0 评论 -
HDU 5226 Tom and matrix
此题的关键在于一个神奇的结论 即一列中组合数的和 可以转化为两个数的差 (具体公式去看官方题解吧 公式太难打) 而这个神奇的结论还是很好证明的 按照C(n,m)的定义等于n!/m!/(n-m)! 2边展开 就可以得出相等 而比赛时我也没有想出来 (>﹏<) (感觉很难想到)有了这个结论 再套一个卢卡斯的版子即可 (n,m是10的5次方 感觉不用卢卡斯也一样的)#include#i原创 2015-10-10 18:07:25 · 381 阅读 · 0 评论 -
HDU 5525 Product
首先 4可以转化为2²这样 即对于 1 2 3 4 5 6 这样的输入 可以转化为 1 16 9 0 1 0 这样 即表示成一些素数的k次方的乘积的形式假设N=2²3³5³ 则N的因子 可以通过枚举取几个2,3,5 来计算出来 由于要计算所有 因子的乘积 所以当我们考虑2这一维时 其他的数一共只有(3+1)*(3+1) 16 种取法 而2这一维可以取1,2,2²这三种 所以2对于结果的影响原创 2015-11-16 20:56:23 · 358 阅读 · 0 评论 -
HDU 4992 / BC 8D Primitive Roots
题意:对于给定的n,求所有的x,满足x的y次方模n等于1,并且不存在比φ(n)更小的y 其中φ是欧拉函数如果x1 满足以上性质 我们称x1为n的原根 那么n的原根之间有没有联系呢?对于x1满足不存在更小的y使得 x1^y%n=1 那么当且仅当x1^(kφ(n))%n才能为1(k为任意正整数) 对于x1²满足 x1²^φ(n)%n=x1^2φ(n)%n=1 并且2φ(n)之内只有原创 2016-07-17 11:04:53 · 446 阅读 · 0 评论 -
HDU 4910 / BC 3D Problem about GCD
首先打表,发现一部分是n-1其他是1找规律发现,对于 素数的n次方 及 2倍素数的n次方 其结果是 n-1 (除2和4外 不能是2的n次方)对于判断一个数是不是素数 直接米勒罗宾即可 对于判断是不是素数的n次方 有两种方法 可以先判能否开平方和三次方 再暴力处理10^4之内素数即可我直接套pollard_rho 分解质因数 发现不同质因数就否定#include#include原创 2016-07-06 22:59:37 · 326 阅读 · 0 评论 -
HDU 4959 / BC 5D Poor Akagi
题意比较简单,就是求数列Li的k次方的前n项和 看了之后感觉无从下手,看了这个题解后才知道http://blog.csdn.net/ahm001/article/details/38724607 这个数列是有规律的 准确的说是叫卢卡斯数,通项公式为L(i)=((1+√5) ^ n + (1-√5) ^ n)/ 2^n 然后再把k次方打开,然后枚举第i项,定义二次域 然后 用快速幂和分治求原创 2016-07-09 15:05:31 · 394 阅读 · 0 评论 -
HDU 5434/BC 54D Reflect
反射n次即共n+1个点。可以设定从最下面的点出发,然后每次跳x个点,这样如果可以访问到每个点后再返回到原点,就是满足要求的。也就是如果x和(n+1)互质,就可以满足要求。答案即为euler(n+1)#include#include#include#include#include#include#include#include#include#include#include原创 2016-10-18 20:52:33 · 304 阅读 · 0 评论 -
LA 3708 Graveyard
想了半天dp什么的 也毫无思路 结果看了书上的方法感觉碉堡了 但 对于不会有两点会更改到一个点 还是比较好理解的 因为本来2个点的间距是比较大的 所以不会出现2个距离一个目标点都小于0.5的状况 但是 对于为什么一定有一个点不动 感觉很难证啊 没想到为什么一定会有一个点不动 #include#include#include#include#include#include#incl原创 2015-09-04 21:39:19 · 306 阅读 · 0 评论 -
hdu5171 GTY's birthday gift
由题意可以看出,每次应该选择2个最大的数合起来再加进去,第一次肯定选择原数列中最大的2个数a,b(a>=b)。而第二次应该选择a+b和a。这样每次新构成的数,是上一次选取的2个数之和,a和b的系数 相当于斐波那契数列。对于快速求斐波那契数列可以构造矩阵 所以就可以推出而这题加上对斐波那契数列的求和,所以可以构造这样的矩阵 来进行求和功能 #include #include原创 2015-07-20 11:11:10 · 449 阅读 · 0 评论 -
HDU 4986/BC 7B Little Pony and Alohomora Part I
题目大意:n个箱子,每个箱子一把钥匙,随机放在一个箱子里,现在你要打开所有箱子,求要用开箱魔法(不用钥匙也能开箱子)的次数期望。先不考虑过大的n尝试用 dp去解,设有1,2,3...n随机选取出一个箱子先开,这里假设选1,1箱中有2种可能 1/n的可能 装着 钥匙1 这时 dp[i]=(dp[i-1]+1)/n。 第二种 n-1/n的可能 假设装着钥匙2 这时 2箱子已不能原创 2015-08-01 15:15:47 · 690 阅读 · 0 评论 -
UVA 11384 Help is needed for Dexter
手推了3 4 5 就可以总结出规律 每次 把后半部分 同时减 后半部分的第一个数 这样就可以跟前半部分做同样的操作 也就相当于不存在了 所以 答案应该是在2的n次方的位置 增长 所以预先存一下 然后二分找就可以了#include#include#include#include#include#include#include#include#include#include#d原创 2015-09-07 17:14:17 · 257 阅读 · 0 评论 -
UVA11300 分金币
非常棒的一道题 看了就觉得是三分 三分第一个给第二个多少 其他的可以推出来 而时间上应该没问题 但是范围会出问题 如果是把范围订为定为 long long 的范围 中间的结果会超 所以不知道范围应该订多少 要是用大数就太麻烦了 还有一个问题是我不能确定3分一定是对的 即它是否是抛物线 所以就开始当数学题做来手推 推半天才得到书上的结论 感觉白书上的题 看起来是比较简单的题 其实思路都好难想到原创 2015-09-04 21:30:33 · 378 阅读 · 0 评论 -
UVA 12716 GCD XOR
题意:求小于等于n的(a,b) 满足 a>b且 axorb=gac(a,b)的所以(a,b)数目 n有30000000这么大 所以一直在想什么O(1)的算法 然而后来才发现 T放宽到5秒 还不限内存 Orz设c为gcd(a,b) 而亦或的特性是 满足a^b=c 则 a^c=b。所以我们可以枚举c 而a是c的倍数 所以可以再枚举a 再算出b=a^c 再检查是否满足 gcd(a,b)==原创 2015-09-28 17:47:35 · 343 阅读 · 0 评论 -
UVA 10491 Cows and Cars
题意: 山羊门具体的故事去百度下即可 而这题是给a个牛 b个车 共a+b扇门 主持人开c扇门 求 总是换门的换到车的概率只是一道简单的概率题 初始选择选择牛的概率: a/(a+b) 车:b/(a+b) 排除c扇和当前选择的门后 剩下a+b-c-1扇门 ↓ ↓ 但剩下的车的数量不同:原创 2015-09-28 17:59:45 · 333 阅读 · 0 评论 -
HDU 5201 The Monkey King
题意:给定n个桃子和m个猴子(其中一个孙悟空)现求孙悟空桃子数量严格大于其他猴子桃子数量的方案数首先枚举孙悟空的桃子数i(从n/.m到n) 不考虑“大于”这个条件的方案数为C(n-i+m-1-1,m-1-1) (隔板法) 减去非法状况即可设 f(j) 表示保证有j个以上的猴子桃子数量比孙悟空多 这里的做法可以理解为 先取出j*i个桃子预先给j个猴子(一会还会分到桃) (j个猴子由(c(m-原创 2015-09-30 16:00:58 · 423 阅读 · 0 评论 -
HDU 5088 Revenge of Nim II
题意:有N堆石子,后手可以在游戏开始前拿走任意堆石子再进行Nim博弈,问后手是否有机会赢。首先要弄清nim博弈 它的一个重要结论就是 如果所有堆石子 亦或起不为0 则先手输 否则 先手赢 所有现在题目转换为 给n个数 其中是否有一些数亦或为0可以把某一堆的数拆成二进制 这样所有的数 就可以列成一个方程组 看是否能通过高斯消元减少矩阵的秩 就可以判断出是否有解#include原创 2015-09-13 18:31:26 · 343 阅读 · 0 评论 -
HDU 5194 DZY Loves Balls
貌似可以用公式做 即(n+m)/n*m 秒出 比赛时一看数据非常小 就直接暴力去敲了 连找规律的老本行都忘记了(>﹏<)公式的意思即为 第i个位置上出现0的概率 m/(n+m) 第i+1个位置上出现1的概率 n/(n+m) 乘起来即 (n+m)/n*m暴力时不能开数组存串否则会T掉 记录上一个位置的数即可#include#include#include#include#incl原创 2015-09-30 16:39:08 · 383 阅读 · 0 评论 -
HDU 5203 Rikka with wood sticks
题目要求分成4段 即只能砍3刀 而令其中的3部分不含有不牢固的小木棍 所以所有的不牢固的小木棍都应该唯一同一段 而为了优先满足3段和长度最大 应该使包含不牢固的小木棍的那一段长度尽量短 即应该沿着不牢固的小木棍中编号最大和最小的2个小木棍切2刀 剩下的2段或1段 在计算个数2段(设为a,b)分成3条边时 只能把较长的a边切开,切开后的2部分a1和a2和大于b了 只要在满足 abs(a1-a2)原创 2015-10-02 19:47:55 · 326 阅读 · 0 评论 -
HDU 4983/BC 6C Goffi and GCD
题面大意:给定n,k 求 使 gcd(n-a,n) gcd(n-b,n)=n^k 成立的a,b的组合数(1首先当k大于2时 只有n=1 是 结果为1 其他为0当k等于2时 结果为1关键在于k=1时原式可简化为 gcd(a,n) gcd(b,n)=n (0而gcd(a,n) 和gcd(b,n)一个分别为n的2个因子,所以就需要我们枚举n的因子,值得注意的是,a是不一定等于gcd原创 2015-08-01 14:38:33 · 384 阅读 · 0 评论