数论
Gipsyu
这个作者很懒,什么都没留下…
展开
-
2019 Nanchang Online Contest Problem H The Nth Item
线性递推函数的循环节是mod+1,但还是被卡时间,所以先把1-1e7中的F函数放到内存中,用矩阵快速幂提前处理出1e7~100e7的幂的特征矩阵,这样每次回答寻用只用O(1)的时间#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef vector<ll> vec;type...原创 2019-09-11 16:14:42 · 185 阅读 · 0 评论 -
BZOJ 2301 莫比乌斯
https://www.lydsy.com/JudgeOnline/problem.php?id=2301比较裸的一道莫比乌斯入门题具体题解网上多的是比较简单不知道为什么别人代码都那么长没有我的优雅哈哈哈这题不要枚举要分块处理AC代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll ...原创 2018-04-25 23:16:58 · 144 阅读 · 0 评论 -
BZOJ2440 莫比乌斯函数
https://www.lydsy.com/JudgeOnline/problem.php?id=2440到今天为止又进一步的理解了莫比乌斯函数挺有意思的本质其实是容斥定理虽然里边还是有一点看不到他的本质但是没关系一点一点的去理解这题二分答案然后o(n)判断很有意思以后写容斥定理的时候可以考虑用莫比乌斯函数来简化运算有意思还有最近测评机脑子被驴踢了AC代码:#include<bits/std...原创 2018-04-25 22:15:27 · 153 阅读 · 0 评论 -
宁夏网络赛H题 FFT
http://www.cnblogs.com/GraceSkyer/p/8921703.html这道题在打网络赛的时候我说了一个假的DP导致学长最后一个小时全在证我的假DP好丢人不对没什么丢人的好骄傲嗯然后这道题是FFT的一个裸体然而我以前没有学过FFT现在终于自己学会了标程:#include <stdio.h>#include <string.h>#include &...原创 2018-04-24 19:36:45 · 267 阅读 · 0 评论 -
BZOJ2749 数论
https://www.lydsy.com/JudgeOnline/problem.php?id=2749这道题还是比较有思维的我借鉴了一点题解不完全是自己完成的BZOJ总是这样每当你做好了第一发WA的准备他总能让你1Y题解是次数就等于2的产生量因为2的产生量远远大于2的消耗量所以欧拉函数多少次后必定是偶数那么打表然后求和就好注意第一次可能这个数是奇数所以要特判一下2AC代码:#include&l...原创 2018-04-14 08:27:11 · 186 阅读 · 0 评论 -
第八届山东省浪潮杯C题
http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/3895.html挺简单的一道题不知道为什么去年那么多队这道题都过不了你随便写写这不就是组合数吗然后先打表阶乘在用逆元裸体啊AC代码:#include<bits/stdc++.h>using namespace std;typedef...原创 2018-04-23 21:01:06 · 184 阅读 · 0 评论 -
FFT详解
最新更新2017.12.8 利用LATEXLATEX对公式进行重新整理,用以辅助原来的图片公式。但是为了体现出这篇博客的”历史沧桑感”,我保留了原有的所有图片(暂时只完成了一部分的公式转换,公式实在是太多了!)。—— GGN序言(来学习的同学们请直接跳过这里就好了…)非常感谢Leo学长为我耐心的讲解,在此对学长表示诚挚的敬意。听课学习竞赛的那一个月里,学长们不惜耽误自己的时间为我耐心讲解算法,对我...转载 2018-04-23 17:19:46 · 824 阅读 · 0 评论 -
BZOJ1053 反素数
https://www.lydsy.com/JudgeOnline/problem.php?id=1053这道题不同于前边的那道题但是整体的思想都是一样的就是搜索AC代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;ll p[20]={2,3,5,7,11,13,17,19,23,29,31,37...原创 2018-04-12 21:26:35 · 233 阅读 · 0 评论 -
Gym - 101620F 数论
https://vjudge.net/problem/Gym-101620F网上的ACM群里认识的朋友问我的一道数论题还是比较水的由于p的数量级只有1e7导致n的数据范围只能控制在1e7然后就是各种逆元推式子但是要注意很多细节:AC代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;ll quick...原创 2018-04-06 11:39:21 · 400 阅读 · 0 评论 -
BNU校赛B题 多重求和
http://www.bnuoj.com/v3/contest_show.php?cid=9358#problem/B题意就不再复述了,比较容易理解这道题我推了半天公式没推出来赛后发现是因为当时有一个没有约分导致之后的猜想错误这道题在这场比赛中是由我们学校的大二的张航学长一血的十分佩服其实公式也不是特别难推找规律应该能找到其实我都找了一半了最后因为没有约分进入了错误的猜想其实找到通项公式之后就是一...原创 2018-04-05 21:12:54 · 254 阅读 · 0 评论 -
BZOJ 3944 杜教筛
https://www.lydsy.com/JudgeOnline/problem.php?id=3944第一次写杜教筛被卡常数卡死感觉还是比较神奇的我终于理解了杜教筛的本质哈哈哈不过被卡常数了没关系不过学长的代码5秒钟切了厉害不过一向追求代码漂亮美观的我感觉还是我写的代码比较漂亮超时就超时吧而且也不光我超时感觉这题时限有点变态随便从别的博客上找了几个别人的代码交上去全他妈超时超时代码:#incl...原创 2018-04-17 21:16:59 · 188 阅读 · 0 评论 -
LuoGu P1306 Fibonacci
https://www.luogu.org/problemnew/show/P1306这次遇见了我再具体数学那本书上看到的结论23333当时WildCow学长还证出来了两个Fibonacci Number 's Gcd=Gcd 's FibonacciCode of AC:#include<bits/stdc++.h>using namespace std;typedef long...原创 2018-06-04 21:43:38 · 148 阅读 · 0 评论 -
BZOJ 2956 Number Theory
https://www.lydsy.com/JudgeOnline/problem.php?id=2956Not so easyNumber Theory BlockAs for how to blockI don't want to say thereToday I'm tired#include<bits/stdc++.h>using namespace std;typedef...原创 2018-06-01 22:19:39 · 157 阅读 · 0 评论 -
Codeforces 1188B Count Pairs
题目很有意思但代码很短#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=3e5+10;ll A[N];int main(){ map<ll,ll> M; ll ans=0; ll n,p,k;cin>>n>>p...原创 2019-07-16 13:02:05 · 225 阅读 · 0 评论 -
BZOJ4894 矩阵外向树&&辗转相除消元
外向树需要把度数矩阵改成入度因为取模,高斯消元要在整数下进行有一种辗转相除消元法,可以不用求逆元,而且非常好写,复杂度最后求代数余子式的时候去掉的应该是根的那一行和那一列#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll N=310,M=1000000007;ll a...原创 2019-02-10 11:26:00 · 404 阅读 · 0 评论 -
BZOJ3309 线性筛
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e7;int p[N+10],cnt,v[N+10],u[N+10];ll g[N+10];void init(){ u[1]=1; for(int i=2;i<=N;++i){ if(!v[i]){ ...原创 2019-02-09 11:14:48 · 195 阅读 · 0 评论 -
BZOJ3122 BSGS
高中数学+BSGS#include<bits/stdc++.h>using namespace std;typedef long long ll;ll Pow(ll x,ll y,ll mod){ ll ans=1; for(;y;y>>=1){ if(y%2==1)ans=ans*x%mod; x=x*x%mod; } return ans;...原创 2019-02-08 11:10:09 · 173 阅读 · 0 评论 -
HDU5528 迪利克雷卷积
被卡常了wuwuwu,这道题最后也没过,本机测试随机满数据不到2s,20000个1e9 4s这种做法比较奇葩,我估计没人会这么做这道题的本质是左边那个希腊符号是欧拉函数,右边的是因子之和,都是积性函数,数论卷积后还是积性函数所以n因式分解,化成答案变成几个积性函数的积总复杂度 啊,计蒜客上A了详细的写下这道题的题解:容易的看出,答案是: 等...原创 2018-12-13 14:15:12 · 378 阅读 · 0 评论 -
HDU 6430 DSU
竟然A了 23333,复杂度真的是玄学最大复杂度n根号loglog,但其实复杂度远没这么大,后来一想A了正常首先,复杂度计算的是错的,没有根号,n即是最大约数的个数第二,考虑到轻链一开始是很小的,而1e5以内的约数个数最多的数只有60+个约数第三,轻链在向重链合并的时候,很多因数是被重复的,计算量大大减小,或者换一种理解方式,很难打满1e5个因数。以后感觉树上做不了的题,都拿D...原创 2018-10-25 20:54:40 · 206 阅读 · 0 评论 -
HDU 6395 灵性优化
我知道为什么这道题A的人这么少了由于数论分块的特性这个块会在前边特别密来后又来个矩阵快速幂复杂度会很高还不如一个一个手推和那个等差数列异或和的优化思想是一样的都是对数论分块的前半部分的优化#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll mod=1e9...原创 2018-10-25 08:31:53 · 126 阅读 · 1 评论 -
HDU4675 莫比乌斯反演
卡了半天原来是卡在预处理上了以为n根号n的预处理不碍大事后来发现可以用nlog来处理当时没想到。。其实原理很简单。。。看了一眼别人的代码其他的都是自己推的一道简单的组合数加中档莫比乌斯的题其实莫比乌斯的本质就是容斥#include<bits/stdc++.h>using namespace std;typedef long long ll;c...原创 2018-10-10 19:52:17 · 242 阅读 · 0 评论 -
HDU5275 数论灵性题
这道题非常常见的数论分块但是会超时然后会发现i小的时候,在等差数列异或和的时候很多计算都是多余的所以可以从这里入手前一半暴力其实这个问题也可以从那个等差数列异或和函数入手把他的遍历上限改改这道题就能A#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll...原创 2018-09-21 17:07:20 · 239 阅读 · 0 评论 -
BZOJ3505 数论
https://www.lydsy.com/JudgeOnline/problem.php?id=3505不算太水的题但也不算太难首先算出一堆点选三个点的方法数然后减去三个点一线的方法数那么问题来了怎么算呢其实都是一个套路找GCDGCD代表两个点之间在网格上的点的数量加一然后求区域和再枚举左端点然后乘以二因为左右两边都要算一次下AC代码:#include<bits/stdc++.h>...原创 2018-04-17 18:33:26 · 234 阅读 · 0 评论 -
BZOJ3667 Pollard Rho
https://www.lydsy.com/JudgeOnline/problem.php?id=3667给你个大质数判断是不是质数不是写出最大因子Pollard Rho模板题注意大数乘法时要套模板AC代码:#include<bits/stdc++.h>using namespace std;typedef unsigned long long ll;vector <ll&...原创 2018-04-05 08:08:54 · 139 阅读 · 0 评论 -
BZOJ1041 数论
https://www.lydsy.com/JudgeOnline/problem.php?id=1041这道题是我和大奶牛学长一起完成的我推出了公式,而且我发现我的这种做法要比网上其他的解题方法要来的简单但是推出了公式我不会解然后问了大奶牛学长果然他想出了办法我的解题思路是这样的设k=r-y其中k大于0小于r那么原式变成了x^2=(2*r-k)*k那么问题变成了满足这样条件的k有多少个好了直接先...原创 2018-04-11 18:11:03 · 268 阅读 · 0 评论 -
HDU6069
https://vjudge.net/problem/HDU-6069算约数的个数筛法的思想WA了半天wuwuwuAC代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll M=998244353;const int N=1e6;int P[N+10];vector<ll&...原创 2018-04-08 21:15:38 · 287 阅读 · 0 评论 -
ZOJ 2647 欧拉函数
另一个版本的BZOJ 3884AC代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;ll quickmod(ll a,ll b,ll m){ ll ans=1; while(b){ if(b&1) ans=(ans*a)%m; b>&g...原创 2018-04-08 16:28:31 · 138 阅读 · 0 评论 -
BZOJ3884 欧拉函数
https://www.lydsy.com/JudgeOnline/problem.php?id=3884时隔几个月,又做了一遍这道题发现这题是真的经典如果最大公因数不是1的化简取模运算AC代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll N=1e7;ll quickmod(l...原创 2018-04-08 16:06:12 · 200 阅读 · 0 评论 -
BZOJ2242计算器
http://www.lydsy.com/JudgeOnline/problem.php?id=2242此题就是入门的模板题分别用到了快速幂取模利用扩展欧几里得算法计算线性同余方程利用 Baby Step Giant Step 算法解高次同余方程典型的模板题我把第三个算法翻译成为宝宝一小步,巨人一大步算法我也不知道为什么会有这种算法名字要是我发明了什么算法一定以自己的名字加附上冠BSGS算法模板l...原创 2018-03-12 22:24:47 · 302 阅读 · 0 评论 -
FZU2020
题目题意很简单给你三个数 n m p求C n m %p由于p是不固定的,所以不能运用阶乘来打表这里运用到了Lucas定理定理的介绍:http://blog.csdn.net/ACdreamers/article/details/8037918对于 n m 较大的时候 Lucas定理就起到了作用AC代码:#include<iostream>using namespace std;ty...原创 2018-03-12 19:46:54 · 317 阅读 · 0 评论 -
BZOJ4517
http://www.lydsy.com/JudgeOnline/problem.php?id=4517题意十分的明显写了半天一不小心F5刷新了GG明显的组合数加错排数错排数的话可以线性的dp出来for (int i=2;i<=1000000;i++){ f[i]=f[i-1]*i%M; if (i&1) f[i]--; else f[...原创 2018-03-12 17:38:09 · 268 阅读 · 0 评论 -
BZOJ2818
http://www.lydsy.com/JudgeOnline/problem.php?id=2818题意十分简单数论的一道水题枚举小于n的质数对于每个质数 分别乘上互质的数就可得到一组新的数对且该数对的gcd是该质数这让我们想到了欧拉函数首先枚举出小于1e7的质数(线性筛法)然后利用筛选法算出所有数的欧拉函数然后前缀和即可当枚举到了一个质数p那么ans+=B[n/p]*2-1n/p代表乘积小于...原创 2018-03-12 16:20:21 · 340 阅读 · 0 评论 -
BZOJ1101 Mobius函数+分块
http://www.lydsy.com/JudgeOnline/problem.php?id=1101题意很简单意思就是给你下a,b,d;问x<=a&&y<=b&&gcd(x,y)==k典型的mobius函数的模板题但是朴素的求法会超时所以可以利用一种除数分块的思想在某种距离之内是不会改变的AC代码:#include<bits/stdc++.h&...原创 2018-03-18 12:06:51 · 279 阅读 · 0 评论 -
BZOJ2190
http://www.lydsy.com/JudgeOnline/problem.php?id=2190应该说是数论中档题吧可以这样思考我们首先只看一半的因为这个东西是对称的那么离原点横坐标为x的距离的这一列上可以看到的点是phi(x)其中phi是欧拉函数因为如果他们两个互质的话前边不会有点会挡住他这一点很好理解那么我们算每个数的欧拉函数然后再加和就好了当然是用线性欧拉函数的筛法最后求和在×2+3...原创 2018-03-17 08:54:22 · 237 阅读 · 0 评论 -
BZOJ1607
http://www.lydsy.com/JudgeOnline/problem.php?id=1607应该算是中档水题思想的话基本上就是筛选法只不过这次的筛选法有所不同不是去筛质数而是根据给定的数来筛选AC代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;inline void read(int...原创 2018-03-16 17:12:18 · 201 阅读 · 0 评论 -
BZOJ4802 Pollard Rho算法
https://www.lydsy.com/JudgeOnline/problem.php?id=4802题意:一个1e18的数求它的欧拉函数大数分解然后按容斥定理来算虽然我还不太明白PR算法好神奇随机数都能做题AC代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;vector <ll>...原创 2018-04-01 22:06:25 · 238 阅读 · 0 评论 -
51nod 1135 原根
https://vjudge.net/problem/51Nod-1135#寻找一个1e9的质数的原根第一次做这样的题看了别人的博客才理解的https://blog.csdn.net/u013486414/article/details/47781857不过还是有点不太理解原根这个东西的本质没事,慢慢的理解AC代码:#include<iostream>#include<vect...原创 2018-04-09 16:00:22 · 168 阅读 · 0 评论 -
CF27E 反素数
https://vjudge.net/problem/CodeForces-27E类似于BZOJ上反素数的那道题都是搜索的这类做法AC代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;ll p[20]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53};c...原创 2018-04-09 17:32:52 · 319 阅读 · 0 评论 -
BZOJ4517
https://www.lydsy.com/JudgeOnline/problem.php?id=4517这题竟然60s我日不过我的代码带上读入挂跑了14s就出来了题目很简单预处理加错排问题公式其实完全可以跑的更快把inv提前预处理就行了AC代码#include<bits/stdc++.h>using namespace std;typedef long long ll;cons...原创 2018-03-28 22:10:18 · 323 阅读 · 0 评论 -
BZOJ4173
https://www.lydsy.com/JudgeOnline/problem.php?id=4173学了半天数论突然发现自己还没入门我日这题太不好想了不过可以打表找规律然而我却懒没打表想了二十分钟没思路看了题解题解真的牛逼卧槽https://blog.csdn.net/zhhx2001/article/details/52300924https://blog.csdn.net/popoqqq...原创 2018-03-28 21:26:36 · 358 阅读 · 0 评论