
数论
moomhxy
你若是天才,我便是疯子
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CodeForces - 1247D Power Products【数论】
题目链接:https://codeforces.com/problemset/problem/1247/D题意:给你一个序列a,问有多少对i,j满足存在x使得 ai * aj = x ^ k , k是给定的。思路:两个数满足条件就是要相同因数的个数要是k的倍数,把每个数质因数分解,然后算出来补数,例如还需要2个2,就是4然后我们就在map里找这个补数,然后再将当前数的贡献存入map...原创 2019-11-21 23:30:01 · 430 阅读 · 0 评论 -
POJ1845-Sumdiv【算术基本定理 + 快速幂】
Consider two natural numbers A and B. Let S be the sum of all natural divisors of A^B. Determine S modulo 9901 (the rest of the division of S by 9901).InputThe only line contains the two natural n...原创 2019-02-18 12:13:48 · 236 阅读 · 0 评论 -
牛客网Chino with Expectation【思维+位运算】
Chino的数学很差,因此Cocoa非常担心。这一天,Cocoa准备教Chino学习异或。众所周知,,即“异或”表示了和的二进制按位异或的结果(在C/C++中,表示了异或运算。),它的规则是如果这一位相同为0,否则为1.例如,,因为,,根据定义,它们之间的异或值是,下面是异或运算的真值表:A B 0 0 0 0 1 1 1 0 1...原创 2019-04-12 20:03:38 · 446 阅读 · 0 评论 -
2018南京区域赛G-Pyramid【数论】
思路:我也就只能找找规律混分了。我们可以发现n = (n + 1) * (n + 2) * (n + 3) / 24,我们需要对24取逆元,可以用快速幂powermod(n, m- 2) 来求n的逆元,可自行证明。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn ...原创 2019-04-21 14:33:52 · 1164 阅读 · 3 评论 -
2018南京区域赛J-Prime Game【素数分解】
思路:我们需要统计每个素因子的贡献,首先筛一遍素数,然后对每个数进行质因数分解,然后我们可以得到这个数包含的素因子,然后统计一下每个因子对区间的贡献,具体可以看代码,然后就不断更新素因子的位置。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1e6 + 1...原创 2019-04-21 14:39:21 · 465 阅读 · 1 评论 -
第五届河南省程序设计大赛B 最强DE 战斗力【数论+高精度】
春秋战国时期,赵国地大物博,资源非常丰富,人民安居乐业。但许多国家对它虎视眈眈,准备联合起来对赵国发起一场战争。显然,面对多个国家的部队去作战,赵国的兵力明显处于劣势。战斗力是决定战争成败的关键因素,一般来说,一支部队的战斗力与部队的兵力成正比。但当把一支部队分成若干个作战队伍时,这个部队的战斗力就会大大的增强。一支部队的战斗力是可以通过以下两个规则计算出来的:1.若一支作战队伍的兵力...原创 2019-05-02 19:50:22 · 165 阅读 · 0 评论 -
Educational Codeforces Round 63 (Rated for Div. 2)C. Alarm Clocks Everywhere【数论】
C. Alarm Clocks Everywhere思路:题意是给你n个任务,你可以任意选择一个开始时间,并从给定序列中选择一个间隔,使得能完成这n个任务。就是求出来n-1个差,然后求出来最大公约数,然后判断这m个间隔是否存在一个是这个数的因子即可。#include<cstdio>#include<cmath>#include<string>...原创 2019-04-23 20:54:38 · 508 阅读 · 0 评论 -
Codeforces Round #554 (Div. 2)C. Neko does Maths【数论】
Neko loves divisors. During the latest number theory lesson, he got an interesting exercise from his math teacher.Neko has two integersaaandbb. His goal is to find a non-negative integerkksuch ...原创 2019-04-29 22:11:02 · 308 阅读 · 0 评论 -
牛客小白月赛14A-简单计数【组合数+规律】
你在一个有 n 个城市的国家中行走,城市从 1 到 n 依次编号任意两个城市之间都有一条双向道路可以通行,且你可以花一天的时间从当前所在的城市到达任意一个别的城市由于你比较闲的无聊,所以你不会连续两天都呆在同一个城市,也就是说每天你所在的城市都不相同(这句话的意思是,对于相邻的两天,你所在的城市应该不同)一开始你在 1 号城市,求经过 k 天后你回到 1 号城市的方案数当然如果不存在任意...原创 2019-05-11 22:42:14 · 460 阅读 · 0 评论 -
牛客小白月赛14B-投硬币【概率】
你在练习 dp,你每一次会有 p 的概率成功,1-p 的概率失败求投 n 次后,至少有 k 次成功的概率答案模 998244353,其中 0≤k,n≤105,0≤p<9982443530≤k,n≤105,0≤p<998244353实际上给你的这个概率是在模 998244353 意义下的,换句说 p≡ab(mod998244353)p≡ab(mod998244353)输入描...原创 2019-05-11 22:44:41 · 408 阅读 · 0 评论 -
牛客网Chino with Equation【组合数】
Chino的数学很差,因此Cocoa非常担心。今天,Cocoa要教Chino解不定方程。众所周知,不定方程的解有0个或者若干个。给出方程:Cocoa想知道这个不定方程的正整数解和非负整数解各有几个。题目对Chino来说太难啦,你能帮一帮Chino吗?输入描述:两个正整数m, n输出描述:题目要求的答案,即正整数解的个数和非负整数解的个数。由于答案可能会很大,你只...原创 2019-04-12 19:52:50 · 312 阅读 · 0 评论 -
牛客练习赛43F-Tachibana Kanade Loves Game【容斥】
立华奏是一个天天打比赛的萌新。省选将至,萌新立华奏深知自己没有希望进入省队,因此开始颓废。她正在颓废一款名为《IODS 9102》的游戏。在游戏中,立华奏拥有 k 点血量,而她的对手拥有 q 点血量。当她的血量变为 0 时,游戏便结束了;同理,如果对方的血量变为 0,立华奏就获胜了。在立华奏手中,有 n 种武器,编号分别为1,2,⋯,n1,2,⋯,n,每一种武器在使用后,都能让对方受到 1 ...原创 2019-04-12 19:42:20 · 215 阅读 · 0 评论 -
POJ2115-C Looooops【扩展欧几里得】
A Compiler Mystery: We are given a C-language style for loop of type for (variable = A; variable != B; variable += C) statement;I.e., a loop which starts by setting variable to value A and wh...原创 2019-02-12 16:25:28 · 223 阅读 · 2 评论 -
POJ2418-Farey Sequence【欧拉函数】
The Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rational numbers a/b with 0 < a < b <= n and gcd(a,b) = 1 arranged in increasing order. The first few are F2 ...原创 2019-02-12 17:26:30 · 170 阅读 · 0 评论 -
CodeForces 1114C. Trailing Loves (or L'oeufs?)【数论】
Aki is fond of numbers, especially those with trailing zeros. For example, the number 92009200 has two trailing zeros. Aki thinks the more trailing zero digits a number has, the prettier it is.Howev...原创 2019-02-12 21:53:35 · 759 阅读 · 0 评论 -
UVA10200-Prime Time【暴力、数论】
思路:首先我就否定了暴力判断是否是素数,然后又想着筛素数空间会爆,没想到最后还是暴力可以过,果然是暴力出奇迹。最后输出的时候会卡精度,wa的我莫名其妙的,这题也是有点坑#include<set>#include<map>#include<cstdio>#include<cmath>#include<queue>#inclu...原创 2019-02-19 16:45:39 · 213 阅读 · 0 评论 -
UVA11827-Maximum GCD【数论】
思路:这题比较简单,从头到尾比较一遍就行了,需要注意的就是输入方式,需要进行转换,将字符串转换成整数类型,另外答案最小是1,需要注意一下。#include<set>#include<map>#include<cstdio>#include<cmath>#include<queue>#include<vector>...原创 2019-02-19 22:06:04 · 195 阅读 · 0 评论 -
洛谷P1072 Hankson 的趣味题【数论】
题意:给你4个数abcd,让你求x的数量,其中x满足:gcd(a,x) = b, lcm( c, x) = d;思路:我们可以推导出两个结论,gcd(x/b, a/b) == 1 (如果大于1说明公约数还包含其他不为1的因子,相悖)gcd(d/x, d/c) == 1 (同样,不为1 的话说明最小公倍数还应包含其它不为1的因子),接下来我们枚举x的值就可以了。#include&...原创 2019-03-04 23:24:26 · 247 阅读 · 0 评论 -
CodeForces - 343A Rational Resistance 【数学思维】
Mad scientist Mike is building a time machine in his spare time. To finish the work, he needs a resistor with a certain resistance value.However, all Mike has is lots of identical resistors with uni...原创 2019-03-11 16:51:37 · 245 阅读 · 0 评论 -
POJ3126-Prime Path 【BFS + 素数筛】
给你两个四位的素数a,b。a可以改变某一位上的数字变成c,但只有当c也是四位的素数时才能进行这种改变。请你计算a最少经过多少次上述变换才能变成b。例如:1033 -> 81791033173337333739377987798179最少变换了6次。Input第一行输入整数T,表示样例数。 (T <= 100)每个样例输入两个四位的素数a,...原创 2019-03-29 21:24:01 · 278 阅读 · 0 评论 -
牛客练习赛43B-Tachibana Kanade Loves Probability【快速幂】
立华奏在学习初中数学的时候遇到了这样一道大水题:“设箱子内有 n 个球,其中给 m 个球打上标记,设一次摸球摸到每一个球的概率均等,求一次摸球摸到打标记的球的概率”“emmm...语言入门题”但是她改了一下询问方式:设最终的答案为 p ,请输出 p 小数点后 K1到 K2位的所有数字(若不足则用 0 补齐)输入描述:第一行一个整数 T,表示有 T 组数据。接下来每行包含四个整数...原创 2019-04-12 19:36:17 · 182 阅读 · 0 评论 -
牛客网小白月赛14G-many sum【数论】
定义序列 A :A1=A1= 输入的东西~~Ai=(Ai−1+7∗i)%M,i≥2Ai=(Ai−1+7∗i)%M,i≥2定义序列 B : Bi=∑d|iAdBi=∑d|iAd你要求 ⊕Ni=1Bi⊕i=1NBi这样我们只要输入三个数,输出一个数啦~其中 ⊕⊕ 表示异或,也就是说你需要把所有的 BiBi 异或起来输出输入描述:第一行三个整数 N,A1,MN,A1,M输出...原创 2019-05-11 22:47:49 · 320 阅读 · 0 评论 -
牛客网 subsequence 1 【线性DP + 组合数】
给你两个字符串s和t由数字组成(字符'0'〜\ sim~'9')。 s的长度为n,t的长度为m。 s和t的第一个字符都不是'0'。如果被视为正整数,请计算大于t的s的有效子序列的数量。当且仅当其第一个字符不为“0”时,子序列才有效。如果两个子序列由原始字符串中的不同位置组成,则它们是不同的。例如,字符串“1223”具有2个不同的子序列“23”。因为答案可能很大,请输出模数998244353的答案...原创 2019-08-04 14:59:34 · 345 阅读 · 0 评论 -
2018宁夏ICPC邀请赛D-Take Your Seat【概率】
题意:给你n个座位,第一个人可以随意坐,第i个人的座位是i,如果被占了就随机找一个空位坐,问第n个人坐到n号座位的概率。如果第一个人坐到1号,那么后面的人都将坐到自己位置上,如果1号坐到n号位上,那么此时概率是0,如果坐到第k个座位上,那么前面k-1个人的座位一定都是对的,此时f(k) = n-k+1,则f(1)+f(2)+ ……+f(n)/总,就为1/2.给你m个座位,不同的是不是从1号...原创 2019-05-28 22:50:30 · 1273 阅读 · 0 评论 -
牛客网 Han Xin and His Troops【扩展中国剩余定理】
就是模板题,但是数据范围有点大,所以用python来写的。def exgcd(a, b): if b == 0: return a, 1, 0 q, y, x = exgcd(b, a % b) y -= a // b * x return q, x, y def crt(): flag = 0 for i in...原创 2019-08-20 20:24:57 · 193 阅读 · 0 评论 -
牛客网-Chessboard 【组合数】
今天CSL又来了TL。他看到TL有一个非常大的棋盘和许多玻璃球。所以他有个主意。他对TL说:“你有多大的棋盘......和我一起玩游戏怎么样?我会给你,你可以在棋盘上选择一个任意大的方形区域(假设你选择一个方形区域)和在每个正方形上放置一些玻璃球(每个正方形应放置不小于玻璃球)。您的位置需要满足:如果我们选择不同行和列的正方形,那么无论我们如何选择,总数这个方块中的玻璃球应该总是相同的,不应该大于...原创 2019-08-16 17:08:07 · 280 阅读 · 0 评论 -
牛客网 KM and M 【类欧几里得】
思路:由于n,m的范围很大,我们考虑二进制位,通过来判断该二进制位。看别人的博客讲的类欧几里得打开链接。#include <bits/stdc++.h>using namespace std;typedef __int128 ll;#define mod 1000000007#define ls rt << 1#define rs rt <...原创 2019-08-22 00:23:31 · 493 阅读 · 0 评论 -
牛客网 Quadratic equation【二次剩余】
思路:这道题考察到了二次剩余,不考虑取模 (x - y)^2 = (x + y) ^ 2 - 4xy = b^2 - 4c考虑取模 (x - y)^2 mod p = b^2 - 4c mod p (同余)a是模p的二次剩余的充要条件为a^((p-1)/2) 同余 1 mod p#include <bits/stdc++.h>using namespace std;t...原创 2019-08-27 20:34:56 · 280 阅读 · 0 评论 -
牛客网 The power of Fibonacci 【中国剩余定理+循环节】
思路:首先根据同余式的性质所以1000000000 = 2^9 * 5^9 = 512 * 1953125,根据同余性质,我们只需要根据中国剩余定理算出来分别在在512和1953125为模下的同余方程的解就行了,两个数可以打表算出来循环节分别为loop1 = 768,loop2 = 7812500,然后求出来a[i] = (n/loop[i] *sum[loop[i]] + s...原创 2019-08-30 21:08:08 · 236 阅读 · 0 评论 -
HDU 6627 equation【思维 + 数学】
题意:给你两个序列a和b,让你求满足该条件的所有x。思路:首先对于所有ai,bi,我们都可以找到一个G点,使得小于G的 | ai * x + bi | = -ai * x - bi , 此时G就是-bi / ai , 所以我们记录一下所有G点,然后按照从大到小的顺序枚举,因为后面小于的式子都已经确定了,所以我们就可以求解答案了。当ai和为0, bi和为C的时候很明显有无穷解,而当bi 的...原创 2019-09-03 20:23:50 · 233 阅读 · 0 评论 -
HDU 6624 fraction【辗转相除法+数论】
题意:给你p和x,让你求最小的b满足 a ≡ bx (mod p) 。思路:这道题比较巧妙,看了别人的推导的公式也跟着推了一遍所以新式子对于左右两边都变成了真分数,所以我们可以将其作倒数就可以继续代入求解。#include <bits/stdc++.h>using namespace std;typedef long long ll;#define lson...原创 2019-09-03 21:34:35 · 192 阅读 · 0 评论 -
HDU 5584- LCM Walk 【数论】
题意:给你一个x和y,z = lcm(x, y),每次x加上z或者y加上z,然后给你一个终点,问你最多能从几个点转移过来的。思路:对于给定的终点(x, y) , 我们可以知道一定是较大那个数加上了z,所以我们令y为较大那个数。设(x, y1) 是上次的点,g = gcd(x, y1), z = lcm(x, y1) = k*x , 那么y1 = k * gcd(x, y), gcd(x,...原创 2019-10-01 15:43:39 · 247 阅读 · 0 评论 -
牛客网 All men are brothers【并查集+组合数】
题意:给你n个人,m次询问,每次让两个人加入一个并查集,然后问你能挑出来多少对4个人都不属于一个集合。思路:肯定要用并查集来维护,考虑每次合并两个人消除的影响,假设两个集合分别为x,y人,res为选择两个陌生人的数,那么ans = ans - x * y * (res - x * (n - x) - y * (n - y) + x * y). 其中x * (n - x) 是之前对答案的贡献...原创 2019-08-20 15:34:18 · 228 阅读 · 0 评论 -
牛客网 Is Today Friday? 【蔡勒公式】
不,这不是星期五:(唐唐喜欢星期五,他已经编制了n天的列表,这些都是星期五!这个列表中的每个日期都形成为“yyyy / mm / dd”,其中“yyyy”是一个四位数代表年份的数字,“mm”是代表月份的两位数字,“dd”是代表日期的两位数字.TangTang只考虑1600到9999之间的年份(含),所以列表中的每一年总是有四位数字,但是在必要的时候,月份和日期可能会有前导零。例如,“2019年8月...原创 2019-08-15 01:01:04 · 355 阅读 · 0 评论 -
HDU 6608-Fansblog【威尔逊定理+快速乘】
题意:给你一个素数Q,让你找到一个最大的P<Q, 求P! mod Q。思路:威尔逊定理就是对于一个素数P, 满足(P - 1) !≡ -1 (mod P) , 其实也就是(P - 1) ! mod P == P - 1, 所以我们就能很容易的解决这道题了,我是打了1e7的素数表,然后相乘的时候用了快速乘防止爆long long,另外不要忘了除法取模要用逆元。#include ...原创 2019-08-07 20:14:18 · 236 阅读 · 0 评论 -
51nod2489 小b和灯泡【筛因子】
小b有n个关闭的灯泡,编号为1...n。小b会进行n轮操作,第i轮她会将编号为i的倍数的灯泡的开关状态取反,即开变成关,关变成开。求n轮操作后,有多少灯泡是亮着的。收起输入输入一个数字表示灯泡数n,其中1<n≤10000000输出输出一个数字表示最终亮着的灯泡数思路:利用筛法求素数的思想,统计每个因子组成的数,最后统计一下答案就行了,另外可以发现规律就是sqr...原创 2019-05-29 20:32:48 · 375 阅读 · 0 评论 -
HDU 4135 Co-prime【容斥定理】
Given a number N, you are asked to count the number of integers between A and B inclusive which are relatively prime to N.Two integers are said to be co-prime or relatively prime if they have no com...原创 2019-07-13 20:25:27 · 212 阅读 · 0 评论 -
牛客网 Integration 【数学】
题目链接:https://ac.nowcoder.com/acm/contest/881/B思路:其中这篇博客讲的很不错链接,lls推导也很详细#include<set>#include<cstdio>#include<vector>#include<string>#include<cstring>#in...原创 2019-07-19 13:52:09 · 457 阅读 · 1 评论 -
线性基模板
插入void ins(ll x) //插入{ for(int i = 62; i >= 0; --i) { if(x & (1ll << i)) { if(!p[i]) { p[i] = x; break; } ...原创 2019-07-26 21:07:05 · 185 阅读 · 0 评论 -
牛客网 triples II 【组合数+DP】
题意:给你一个数a,问让你用n个3的倍数or(或)操作能够得到a的方案数,注:0也是思路:如果把a的二进制表示看做一个集合,而把一个拥有a集合部分1的子集当做a的子集,那么问题就转换成了有多少个a的子集可以通过或操作后得到a,那么我们定义S[i][j]表示i个1,j个2的子集数,(当前二进制位权mod 3,这样可以方便确定3的倍数)很明显可以通过组合数求出来。但在求答案的时候会重复计算,所以需...原创 2019-08-13 20:06:24 · 251 阅读 · 0 评论