数论
nefukadia
菜且不学
展开
-
矩阵连乘-快速幂矩阵
在类斐波那契数列问题中,我们常常需要运用构造一个矩阵连乘的方法来求解。而在矩阵连乘中我们需要用到一个最基本的模板,快速幂矩阵。与整数快速幂(整数快速幂传送门)相似,矩阵的快速幂也是用到不断减少幂的大小来实现洛谷P3390/* * @Description: * @Autor: Kadia * @Date: 2020-08-03 12:07:27 * @LastEditors: Kadia * @Connect: vx:ccz1354 qq:544692713 * @LastEditTi原创 2020-08-03 21:51:14 · 221 阅读 · 1 评论 -
c++数论:同余方程
洛谷P1082谜之ac前置知识:(a*x)%mod=((a%mod)*x)%mod#include <bits/stdc++.h>using namespace std;long long work(long long a,long long b)//求同余方程的函数{ if(a>b) a%=b;//一定要有,不然会一直运行这个 if(...原创 2020-04-16 12:24:04 · 1518 阅读 · 0 评论 -
C++:组合数问题--买水果
题目:nefu:林大超市买水果-搜索原以为C(30,8)太大,会超时,就一直用dp做,结果循环大,又计算了一下C(30,8)不到6e6,所以并不会超时。基本思想:不降原则。#include <bits/stdc++.h>using namespace std;int a[35];int vis[35];int sum=0;int ok=0;int all=0;voi...原创 2020-04-07 17:50:27 · 1926 阅读 · 0 评论 -
求一个整数的因子个数
求因子的个数公式:以上内容来自fuzhihongP537#include <bits/stdc++.h>using namespace std;const int N=1e5;int vis[N+5];int ans[N+5];int flag=0;void ss(int n);int yzs(long long n);int main(){ lon...原创 2020-02-23 11:04:17 · 1000 阅读 · 1 评论 -
素数筛--欧拉
.给定一个数n,求1~n中有哪些是素数#include <bits/stdc++.h>using namespace std;int ans[10005];int vis[10005];int flag;void sss(int n);int main(){ int n; std::ios::sync_with_stdio(0); while...原创 2020-02-13 19:30:07 · 220 阅读 · 0 评论 -
算法拓展之斐波那契数列
你可能不知道斐波那契数列是什么但你一定见过此类数据1 1 2 3 5 8 13 21 34这类数据的题目在算法练习中我们也遇到过第n个数等于它前两个数的和我们通常的办法是打表,然后给你n再取其对应的值输出其实它是有一个公式可以直接求的这个公式仅适用于是1 1 2 3这样开始的如果数列是1 2 3 5这样开始的我们需要在输入的n后面再加1,来求值如下面这个code#inclu...原创 2020-02-01 19:08:32 · 428 阅读 · 0 评论 -
acm大一寒假集训--GCD/快速幂
题目来源于东北林业大学OJ东北林业大学OJ,点击进入????????????我又来了此部分题目不谈纯暴力(题目十除外,因为我只会暴力,但这不是关键,关键是我还AC了,气不气嘛)题目一:最大公约数和最小公倍数Description请计算2个数的最大公约数和最小公倍数;(最大公约数可以使用辗转相除法,最小公倍数=2个数的乘积/它们的最大公约数;)Input输入数据有多组,每组2个正整数a,b(2<...原创 2020-01-04 15:11:36 · 500 阅读 · 0 评论 -
求一个N的阶乘后面有多少个0
N!后面有多少个0前置知识:质因数分解思路:对N!进行质因数分解(是对阶乘分解不是对N分解),N!后面有多少个0就是看这些质因数相乘能产生多少个0,而能相乘产生0的两个质数只有2,5,而N!分解后2的指数一定比5的指数大(关键,因为只要是偶数都能分解出2,而5要每隔5个数才能分解出一个),所以我们就看一看N!能分解出几个5就行了。操作:质因数能分解出5的整数每隔5会出现一次,我们把这个数除以...原创 2020-02-23 11:34:50 · 347 阅读 · 0 评论 -
求N的因子和(1e12)
输入t组数据,每组一个n,(1<=n<=1e12)#include <bits/stdc++.h>using namespace std;const int maxx=1e6+50;int ans[maxx];int vis[maxx];int flag=0;void ss(int n);long long __ans(long long x);int ...原创 2020-02-14 23:57:53 · 797 阅读 · 0 评论 -
c++简单数论:求n^n的最大位上的数字和个位上的数字
求个位上的数字比较简单,就是单独拿个位的数字来快速幂取模#include <bits/stdc++.h>using namespace std;int ksm(long long x,int y,int m)//快速幂取模{ int t; if(y==0) t=1; else { t=ksm(x*x%m,y/2...原创 2020-04-01 00:12:05 · 509 阅读 · 0 评论