数论
河渔船
成长的小垃圾
展开
-
P3518 [POI2011]strongbox
https://www.luogu.org/problem/show?pid=3518问题描述: 有一个密码箱,0 到 n-1中的某些整数是它的密码,且满足:如果a和b都是它的密码,那么(a+b)%n 也是它的密码(a,b可以相等)某人试了k次密码,前k-1次都失败了,第k次成功了。 问:该密码箱最多有多少个密码?输入输出: 输入第一行两个整数分别表示n,k。 第二行k个非原创 2017-05-24 15:00:42 · 529 阅读 · 0 评论 -
na 斐波那契数列f(f(n))
题目描述: 给出T个n,求斐波那契数列的f(f(n)).(答案取模1e9+7) 数据范围: 100% 1<=n<=10100数据好大,那么这题一定有规律。 首先先要了解一个关于斐波切数列的性质,即斐波那契数列 ( 取模 ) 的周期性。 解释一下:就是斐波那契数列对于Mod取模后构成的数列,具有周期性。对于这道题,我们就可以利用斐波那契数列的这个性质。 f(f(n)),最后要对MOD=1e原创 2017-09-24 17:04:53 · 1749 阅读 · 0 评论 -
排列组合问题
这数据写个暴力都拿不了30分 T_T。 C(n,i)*C(n,i)=C(n,i)*C(n,n-i) => 结合现实意义,在n个里面选 i 个,再在n个里面选n-i个的方案数。 就等价于在前n个中选 i 个,在后n各种选n-i个。而且i = 0~n => 在2*n各种选n个。 那么=C(2*n,n);答案要对1000000007取模, C(2∗n,n)modp=(2∗n)!∗(n!∗n!)x原创 2017-08-23 17:21:28 · 312 阅读 · 0 评论 -
trokuti 三角形
问题描述 平面上有N条直线,用方程Aix + Biy +Ci =0表示。这些直线没有三线共点的。现在要你计算出用这些直线可以构造出多少三角形?输入格式 第1行:一个整数N(1 ≤ N≤ 300000)。 下面N行:每行3个整数:Ai, Bi 和Ci,表示对应直线方程的系数。不超过10^9。输出格式 一行,一个整数。 数据规模与约定 对于40%的数据,N ≤1000; 对于100原创 2017-08-21 11:15:10 · 561 阅读 · 0 评论 -
区间平均值(逆序对)
【问题描述】有 个数,随机选择一段区间,如果这段区间的所有数的平均值在[l , r]中则 你比较厉害。求你比较厉害的概率。【输入格式】第一行有三个数 N,l ,r,含义如上描述。 接下一行有 个数代表每一个数的值。【输出格式】 输出一行一个分数 代表答案,其中 , 互质。如果答案为整数则直接输出该整数即可。【样例输入 1】4 2 3 3 1 2 4【样例输出 1】7/10【样例输入 2原创 2017-10-06 18:04:34 · 1435 阅读 · 0 评论 -
完全平方数 hao
【问题描述】从1 −N中找一些数乘起来使得答案是一个完全平方数,求这个完全平方数 最大可能是多少。【输入格式】第一行一个数字N。【输出格式】 一行一个整数代表答案对100000007取模之后的答案。【样例输入】7【样例输出】144【样例解释】但是塔外面有东西。【数据规模与约定】对于20%的数据,1 ≤N≤ 100。 对于50%的数据,1 ≤N≤ 5000。 对于70%的数据,1 ≤N≤ 10^5。原创 2017-10-06 18:59:50 · 305 阅读 · 0 评论 -
拓展欧几里得(转载)
收藏一篇博客 http://blog.csdn.net/zhjchengfeng5/article/details/7786595 在此非常感谢,%%%原创 2017-10-06 21:36:21 · 219 阅读 · 0 评论 -
她 she
30% 暴力枚举 另外20% 拓展欧几里得#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#define LL long longusing namespace std;LL L,R,m,s,p;int T;LL ex_gcd(LL a,LL b,LL &x,原创 2017-10-06 21:55:49 · 327 阅读 · 0 评论 -
看程序写结果(program)
看程序写结果(program)Time Limit:1000ms Memory Limit:64MB题目描述LYK 最近在准备 NOIP2017 的初赛,它最不擅长的就是看程序写结果了,因此它拼命地在练习。这次它拿到这样的一个程序:scanf(“%d”,&n);for (i=1; i<=n; i++) scanf(“%d”,&a[i]);for (i=1; i<=n; i++) for原创 2017-10-07 10:10:05 · 1116 阅读 · 0 评论 -
线性筛欧拉函数
首先有以下性质:(p 为素数) 1. φ(p)=p-1 2. 如果i mod p==0,那么φ( i*p )=p*φ( i ) 3. 若i mod p≠0,那么φ(i*p)=φ(i)*(p-1)证明见http://blog.csdn.net/Lytning/article/details/24432651,在此表示感谢 典型题目见http://poj.org/problem?id=3090原创 2017-05-28 08:08:27 · 594 阅读 · 0 评论 -
逆欧拉函数
bzoj 不知道为什么bzoj是PE那么由上述式子可以逆推得出, N=φ(N)(p1/(p1-1))(p2/(p2-1))…(pk/(pk-1)) 那我们用dfs,来递归实现。#include<iostream>#include<cmath>#include<cstring>#include<cstdio>#include<algorithm>#include<queue>#inc原创 2017-10-08 10:06:12 · 505 阅读 · 0 评论 -
洛谷10月月赛R1·浴谷八连测R1·提高组
SAC E#1 -T1 一道中档题 Factorial题目大意:求n!在k进制下末尾0的个数。 做法:我们对k进行质因数分解,然后用k的质因数去除 n!,然后取num2/num1的最小值就可以了。 看数据范围,对k的质因数分解是要用rho大整数分解来做的,然而数据好像比较弱,筛到1e7就可以过的QAQ。 对于rho的应用见我前边一篇博客 欧拉函数专项#include<iostream>#in原创 2017-10-15 16:00:40 · 277 阅读 · 0 评论 -
洛谷 NOIP 模拟 DAY1
T1题目链接 每次新产生的兔子一定是前面的兔子生的。 先预处理出菲波那切数列,然后用a-f[x]就是a的父亲。(f[x]是小于a的最大的)#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define LL long longusing namespace std;const int N=30原创 2017-11-07 17:07:44 · 231 阅读 · 0 评论 -
洛谷10月月赛R1·浴谷八连测R1·提高组 SAC E#1 -T1 一道中档题 Factorial
题目大意:求n!在k进制下末尾0的个数。 做法:我们对k进行质因数分解,然后用k的质因数去除 n!,然后取num2/num1的最小值就可以了。 看数据范围,对k的质因数分解是要用rho大整数分解来做的,然而数据好像比较弱,筛到1e7就可以过的QAQ。 对于rho的应用见我前边一篇博客 欧拉函数专项#include<iostream>#include<cstring>#include<cst原创 2017-10-15 16:45:21 · 365 阅读 · 0 评论 -
NOIP 模拟题 排列
题目描述 小 G 喜欢玩排列。现在他手头有两个 n 的排列。n 的排列是由 0,1,2,…,n − 1 这 n 的数字组成的。对于一个排列 p,Order(p) 表示 p 是字典序第 Order(p) 小的 排列(从 0 开始计数) 。对于小于 n! 的非负数 x,Perm(x) 表示字典序第 x 小的排 列。 现在,小 G 想求一下他手头两个排列的和。两个排列 p 和 q 的和为 sum原创 2017-10-24 14:17:24 · 404 阅读 · 0 评论 -
NOIP 模拟题 小G的城堡
文件名 输入文件 输出文件 时间限制 空间限制 castle.pas/c/cpp castle.in castle.out 1s 128MB题目描述 小 G 家有一座城堡。城堡里面有 n 个房间,每个房间上都写着一个数字 p i 。小 G 拉着几个小伙伴在城堡里面玩耍, 他们约定, 如果某个人当前站在 i 房间里面, 下 一步这个人就会去 p i 房间,再下一步这个人去 p p i 。 为原创 2017-10-24 17:45:16 · 536 阅读 · 0 评论 -
HDU 2669 Romantic
HDU 传送门 裸的拓展欧几里得#include<iostream>//HDU 2669 #include<cstdio>#include<cstring>#include<cmath>#define LL long long using namespace std;LL A,B;LL ex_gcd(LL a,LL b,LL &x,LL &y){ if(b==0)原创 2017-10-16 16:00:26 · 217 阅读 · 0 评论 -
花(cnm加强)
【问题描述】 商店里出售n种不同品种的花。为了装饰桌面,你打算买m支花回家。你觉得放两支一样的花很难看,因此每种品种的花最多买1支。求总共有几种不同的买花的方案?答案可能很大,输出答案mod p的值。【输入格式】 一行3个整数n,m,p,意义如题所述。【输出格式】 一个整数,表示买花的方案数。 【输入输出样例1】 4 2 5 1 【输入输出样例1说明】 用数字1,2,3,4来原创 2017-09-13 16:13:27 · 366 阅读 · 0 评论 -
铺瓷砖
问题的实质是要我们求两个分数的最小公倍数。 首先,我们要知道,整数a和b的最小公倍数是a*b/gcd(a,b); 那么怎样来求分数的最小公倍数呢? 我们可以先将两个分数通分,分母变为t1,然后再求分子的最小公倍数t2。 那么答案就是t2/t1, 注:最后要约分.#include<cstdio>#include<iostream>#include<cmath>#include<cstri原创 2017-08-15 20:32:06 · 581 阅读 · 0 评论 -
poj 3292 Semi-prime H-numbers
http://poj.org/problem?id=3292如果一个数 i 是 H-素数,那么5i+4i*x一定是H数但不是H-素数, 因为(5i+4i*x)mod 4=5i mod 4=(5 mod 4)(i mod 4)=1*1=1,且5i+4i*x=i(4x+5).做法:先找出所有的H-素数,在两两相乘得出H-合成数#include<cstdio>#include<cstring>#in原创 2017-05-24 16:13:09 · 324 阅读 · 0 评论 -
线性筛素数
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<vector>#include<queue>#define L long#define M 200000007using namespace std;L prime[M],cnt=0;boo原创 2017-05-26 17:53:27 · 344 阅读 · 0 评论 -
算(qbxt)
逆元(费马小定理)+ 快速幂+ 等比数列 读题可知,答案是i~n的以 i 为公比的m项的等比数列和的和;就用到了我们的数学公式: Sn=a1*(q^n-1)/(q-1)然后就用到了逆元——费马小定理: x^(p-1) mod p=1(q^n-1)/(q-1)mod p那这个式子就等于—— (q^n-1)* (q-1)^-1 * (q-1)^p-1 mod p即 (q^n-1)* (q-1)原创 2017-05-17 16:02:51 · 350 阅读 · 0 评论 -
欧几里德的游戏
https://www.luogu.org/problem/show?pid=1290#sub 这题目好像辗转相除。 每次的两个数 a , b (a>b) 分为两种情况: 一, 此时状态为: a/b>1 ,那最完美的做法是取走(a/b-1)*b,那么剩下的两个数就为(a%b+b,b), 对手唯一的做法就是取走b,剩下(b,a%b),这样就能保证每一次的初状态都是由自己取,那等到 a原创 2017-05-19 18:04:41 · 294 阅读 · 0 评论 -
同余方程
题目描述求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解。(保证有解)该方程等价于=>a* x-b* y=1 => a* x+b* y=1 (1/GCD(a,b)==0,即a,b互质)#include<iostream>#include<cstdio>#define LL long longusing namespace std;void e_gcd(int a,int原创 2017-05-19 17:08:48 · 770 阅读 · 0 评论 -
青蛙的约会(ojld)
由题目可得式子:m*t-n* t=y-x+q * l - - -> (n-m)*t+q*l=x-y令a=n-m,b=lc=x-y; a*t+b*l=c 求最小的正t令z=gcd(a,b) 先求a*t+b*q=z ① 当然如果c/z!=0就无解了 得出一组解t0,q0 两边同乘c/z a* t0 * (c/z)+b * q0 *(c/z)=c 同除以c b=b/原创 2017-05-21 08:50:10 · 1342 阅读 · 0 评论 -
Fox Dividing Cheese [CF-371B]
http://codeforces.com/contest/371/problem/B 暴力一点的写法:bfs搜索(可以过,但是有更优的做法),共六种拓展方向,优化一点是:吃大的。 代码:#include<iostream>#include<cstdio>#include<cstring> #include<cmath>#include<queue>#define LL long lo原创 2017-06-18 09:03:30 · 336 阅读 · 0 评论 -
POJ 3090 Visble Lattice Points
问题转化为求1-n的欧拉函数的和*2+1#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<vector>#include<queue>#define LL long long#define M 1009using namespace std;原创 2017-06-02 14:30:44 · 189 阅读 · 0 评论 -
lowbit
树状数组(lowbit) Time Limit:1000ms Memory Limit:128MB题目描述 这天,LYK在学习树状数组。 当它遇到一个叫lowbit的函数时有点懵逼。lowbit(x)的意思是将x分解成二进制,它的值就是,其中k是最小的满足(x & )>0的数。(&是二进制中的and运算) LYK甚至知道lowbit(x)=(x&-x)。但这并没什原创 2017-07-23 14:57:16 · 955 阅读 · 0 评论 -
P3390 【模板】矩阵快速幂
luogu 传送门 矩阵乘法的法则 矩阵乘法的法则#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring> #define LL long long#define MOD 1000000007using namespace std;LL a[109][109],an原创 2017-08-16 16:09:00 · 254 阅读 · 0 评论 -
P1349 广义斐波那契数列
luogu 传送门 我们可以设一个矩阵A={p , 1 q , 0}ans矩阵{a2 , a1},用ans矩阵*A矩阵的n-2次方,ans[1][1]就是答案了。 正确性自己在纸上画一画就显而易见了。#include<iostream>#include<cstdio>#include<algorithm>原创 2017-08-16 17:12:11 · 344 阅读 · 0 评论 -
P2667 超级素数
https://www.luogu.org/problem/show?pid=2667#subn<=100000000,线性筛都不灵了,不过要是考试的话我会选择打表,嘻嘻。 怎么办呢? 我们想一想,符合条件的数一定不多,我们可以选择造一个这样的数。 从高位开始造,只有再加上一位后的数是质数我们才加,所以我们搜索经过的数都符合条件。 时间复杂度也就是不到O(10^6)。#include<ios原创 2017-08-09 15:47:38 · 549 阅读 · 0 评论 -
P1936 水晶灯火灵
https://www.luogu.org/problem/show?pid=1936暴力发现,符合式子的两个数是菲波那切数列的相邻两项。 然后分析是这样的: 记f(n,m)=(n^2-mn-m^2)^2则有f(m+n,m)=[(m+n)^2-n(m+n)-n^2]^2=(n^2+mn-m^2)^2=(m^2-mn-n^2)^2=f(m,n)#include<iostream>#include原创 2017-08-09 21:20:44 · 359 阅读 · 0 评论 -
P1984 [SDOI2008]烧水问题
luogu 传送门这题好生厉害!如果n再小一点的话,这题是个贪心。我们把烧到过100度的水能进行热传导就进行热传导,一直向后进行。 这种做法是O(n^2)的,显然过不了。 然后注意到,这题肯定有规律嘛!推导:设沸腾温度为a 则第一杯温度为a,需要加热t1=a 第二杯可以中和的最高温度为a/2,需要加热t2=a/2 第三杯可以中和的最高温度为t3=(a/4+a)/2=5a/8,需要加热t原创 2017-08-10 20:52:34 · 371 阅读 · 0 评论 -
#82. 【UR #7】水题生成器
uoj 传送门这是uoj上的题解先写了一个45分的dfs#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#define LL long longusing namespace std;LL n,m,ans[50],P=1;void dfs(int x,LL sum原创 2017-08-19 08:56:20 · 311 阅读 · 0 评论 -
不要把球传给我
这是一个组合数问题,因为只能是升序,那题目就是在问你:C(3,j-1)是几。#include<iostream>#include<cstring>#include<cstdio>using namespace std;long long ans=1,j,p=1;int main(){ scanf("%lld",&j); ans=1ll*ans*(j-1)*(j-2)*(j原创 2017-07-28 16:23:57 · 315 阅读 · 0 评论 -
刷题#R6
题目链接 T1 画图可以找出规律; 所有有环的都仅有两种情况, 而树上的方案数为n种; 先跑出带环的图记下乘几个2,然后在与所有的树相乘 如果出现一个联通图中有两个及以上的环时,无论如何也不能匹配成功,那么方案数就是0 期望得分 100 T2原创 2017-11-04 21:38:52 · 261 阅读 · 0 评论