![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
rwrsgg
即使身处黑暗,心中也应该有光才对
展开
-
历届试题 矩阵翻硬币
问题描述 小明先把硬币摆成了一个 n 行 m 列的矩阵。随后,小明对每一个硬币分别进行一次 Q 操作。对第x行第y列的硬币进行 Q 操作的定义:将所有第 ix 行,第 jy 列的硬币进行翻转。其中i和j为任意使操作可行的正整数,行号和列号都是从1开始。当小明对所有硬币都进行了一次 Q 操作后,他发现了一个奇迹——所有硬币均为正面朝上。小明想知道最开始有多少枚硬币是反面朝上的。于是,他向他的好朋友小M寻求帮助。聪明的小M告诉小明,只需要对所有硬币再进行一次Q操作,即可恢复到最开始的状态。然而小原创 2020-11-10 20:46:26 · 182 阅读 · 0 评论 -
历届试题 k倍区间
问题描述 给定一个长度为N的数列,A1, A2, … AN,如果其中一段连续的子序列Ai, Ai+1, … Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间。你能求出数列中总共有多少个K倍区间吗?输入格式 第一行包含两个整数N和K。(1 <= N, K <= 100000) 以下N行每行包含一个整数Ai。(1 <= Ai <= 100000)输出格式 输出一个整数,代表K倍区间的数目。样例输入5 212345样例输原创 2020-10-30 19:53:44 · 117 阅读 · 0 评论 -
[蓝桥杯][算法提高VIP]找素数
给定区间[L, R] , 请计算区间中素数的个数。数据规模和约定2 < = L < = R < = 2147483647 R-L < = 1000000输入两个数L和R。输出一行,区间中素数的个数。样例输入2 11样例输出5引用自埃氏筛法https://blog.dotcpp.com/a/69591#include<iostream>#include<algorithm>#include<cstri原创 2020-10-12 21:38:50 · 226 阅读 · 1 评论 -
历届试题 小数第n位
问题描述 我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。 如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式。本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始的3位数。输入格式 一行三个整数:a b n,用空格分开。a是被除数,b是除数,n是所求的小数后位置(0<a,b,n<1000000000)输出格式 一行3位数字,表示:a除以b,小数后第n位开始的3位数字。样例输入1 8 1样例输出125样例输入1 8 3样例输出原创 2020-09-29 19:53:10 · 174 阅读 · 0 评论 -
扩展中国剩余定理
扩展欧几里得定理的应用:///扩展中国剩余定理,可以模非质数的形式#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;const int maxn = 1e5+5;int n;ll exgcd(ll a,ll b,ll &x,ll &y){.原创 2020-08-04 15:28:17 · 95 阅读 · 1 评论 -
中国剩余定理模板
//中国剩余定理//求解 模质数同余方程的问题可用//模板#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>using namespace std;int n,m[105],a[105],lcm=1;//m为每个方程模的质数,a为余数,lcm公倍数//扩展欧几里得定理 int exgcd(int a,int b,int &x,int .原创 2020-08-04 14:52:03 · 135 阅读 · 1 评论 -
[蓝桥杯][算法提高VIP]Torry的困惑(提高型)
Torry从小喜爱数学。一天,老师告诉他, 像2、3、5、7……这样的数叫做质数。Torry突然想到一个问题,前10、100、1000、10000……个质数的乘积是多少呢?他把这个问题告诉 老师。老师愣住了,一时回答不出来。于是Torry求助于会编程的你,请你算出前n个质数的乘积。不过,考虑到你才接触编程不久,Torry只要你算出这 个数模上50000的值。输入仅包含一个正整数n,其中n< =100000。输出输出一行,即前n个质数的乘积模50000的值。样例输入1样例输出2思原创 2020-07-24 16:49:55 · 184 阅读 · 0 评论 -
中国剩余定理--(同余方程解)
详细介绍请看大佬的讲解:https://www.cnblogs.com/MashiroSky/p/5918158.htmlhttps://blog.csdn.net/acdreamers/article/details/8050018原创 2020-07-18 17:31:50 · 504 阅读 · 1 评论 -
集合计数-(容斥原理+组合数求模)
一个有N个元素的集合有2^N 个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案模1000000007。数据规模和约定1 < = K < = N < = 10 ^ 6。输入输入一行两个整数N,K。输出输出一个整数表示答案。样例输入3 2样例输出6容斥原理公式:在这里我们可以写成:空集为空集的方案数。最后得到:// 容斥原理+组合数取模// 集合计数/*网上思路原创 2020-07-18 16:42:20 · 1314 阅读 · 1 评论 -
组合数逆元求法
// 线性求组合数逆元#include <iostream>#include <cstring>using namespace std;const int pi = 17;int f[10000];int inv[10000];void Init() //线性求逆元 { f[0]=f[1] = 1; inv[1] = 1; for(int i =2;i<10000;i++) { f[i] = f[i-1]*i%pi; inv[i] = (p原创 2020-07-16 17:59:27 · 263 阅读 · 0 评论 -
欧拉筛求素数模板
//欧拉筛#include <iostream>#include <cstring>using namespace std;//求10000以内的素数int prime[1000];int cnt = 0;int vis[10005];int main(){ memset(vis,0,sizeof(vis)); memset(prime,0,sizeof(prime)); vis[0]=vis[1] = 1; for(int i =2原创 2020-07-16 17:19:53 · 92 阅读 · 0 评论 -
暑假训练---三棱锥内切球公式及海伦公式
题目 2326: 七月树的水题题目描述七月树看到了一道题。“哇!水题啊!”七月树愉快地叫着,看样子她 AK稳了。七月树看到的题如下:有一个如图的三棱锥,其中 AD,BD,CD 两两互相垂直。已知 AD,BD,CD 的长度,求该三棱锥内切球的最大体积。输入三个整数 a,b,c,表示 AD,BD,CD 的长度。输出三棱锥内切球的体积,保留 2 位小数。样例输入1 1 1样例输出0.04设内切球bai球 O 则 O 三棱锥四面du任距离 R ,由 O 顶点别三棱锥四面底面四三棱锥原创 2020-06-29 14:58:48 · 6666 阅读 · 0 评论 -
暑假训练10---矩阵乘法(快速幂顺便复习大数乘取模)
矩阵乘法题目描述给定一个N阶矩阵A,输出A的M次幂(M是非负整数)例如:A =1 23 4A的2次幂7 1015 22输入第一行是一个正整数N、M(1< =N< =30, 0< =M< =5),表示矩阵A的阶数和要求的幂数接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值输出输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开样例输入2 21 23 4样例输出7 1015 22#inclu原创 2020-06-23 17:18:24 · 281 阅读 · 0 评论 -
暑假训练6--幸运数(筛法)
题目 1441: [蓝桥杯][2013年第四届真题]幸运数题目描述幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。首先从1开始写出自然数1,2,3,4,5,6,…1 就是第一个幸运数。我们从2这个数开始。把所有序号能被2整除的项删除,变为:1 _ 3 _ 5 _ 7 _ 9 …把它们缩紧,重新记序,为:1 3 5 7 9 … 。这时,3为第2个幸运数,然后把所有能被3整除的序号位置的数删去。注意,是序号位置,不是那个数本身能否被3整除!!原创 2020-06-18 17:51:03 · 228 阅读 · 0 评论 -
暑假一练(斐波那契)---1
总结:这一题总要运用的是矩阵乘法和大数相乘是的大数相乘取模的相关知识,还有一些斐波那契的总要结论总结。/* 当要计算大数的斐波那契数时,首先我们就应该想到矩阵乘法来处理,即矩阵快速幂,斐波那契数列有非常多的优良性质。有如下重要的结论需要记住f(0)+f(1)+f(2)+…+f(n)=f(n+2)-1f(1)+f(3)+f(5)+…+f(2n-1)=f(2n)f(2)+f(4)+f(6)+…+f(2n) =f(2n+1)-1[f(0)]2+[f(1)]2+…+[f(n)]^2=原创 2020-06-13 13:18:26 · 173 阅读 · 0 评论 -
题目 2264: [蓝桥杯][2015年第六届真题]生命之树
在X森林里,上帝创建了生命之树。他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值。上帝要在这棵树内选出一个非空节点集S,使得对于S中的任意两个点a,b,都存在一个点列 {a, v1, v2, …, vk, b} 使得这个点列中的每个点都是S里面的元素,且序列中相邻两个点间有一条边相连。在这个前提下,上帝要使得S中的点所对应的整数的和尽量大。这个最大的和就是上帝给生命之树的评分。经过atm的努力,他已经知道了上帝给每棵树上每个节点上的整数。但是由于 atm 不擅长计算原创 2020-05-31 17:08:53 · 150 阅读 · 0 评论 -
高精度除法模板
//高精度除法!!!#include <iostream>#include <cstring>using namespace std;int a[1005],b[1005],c[1005];int compare(int a[],int b[]) //比较两个高精度大数的数值 { int i; //0位保存的是该数字的总位数 if(a[0]>b[0]) return 1; if(a[0]<b[0]) return -1; for(原创 2020-05-25 12:53:44 · 181 阅读 · 0 评论 -
试题 算法提高 翔集合
问题描述 集合M至少有两个元素(实数),且M中任意两个元素差的绝对值都大于2,则称M为“翔集合”,已知集合S={1,2…,n},请求出n的子集中共有多少个翔集合。输入格式 输入共一行,一个整数n.(n>=2)输出格式 输出共一行,一个整数表示S的子集中共有多少个翔集合,由于个数可能过大,请输出这个值除以1000007的余数。样例输入4样例输出1数据规模和约定 对于20%的数据,2<=n<=1000000 对于100%的数据,2<=n<=10^1原创 2020-05-18 09:04:20 · 3101 阅读 · 5 评论 -
矩阵快速幂模板--常用于斐波那契数
//矩阵快速幂,常用于斐波那契数列取模 #include <iostream>#include <cmath>#include <cstring>using namespace std;struct node{ int mp[5][5]; //定义矩阵; node(){} node(int t) { for(int i=0;i<5...原创 2020-04-24 14:41:47 · 119 阅读 · 0 评论 -
欧拉函数的两个常用模板
//算法训练之欧拉函数的单个求法与打表求多个数#include <iostream>#include <cmath>#include <cstring>#define maxn 100005using namespace std;typedef long long ll;ll E[maxn];ll euler(ll n) //求单个的欧拉函数...原创 2020-04-24 13:55:05 · 98 阅读 · 0 评论 -
Lucas--递归实现
//Lucas --递归实现 #include <iostream>#include <algorithm>#include <cmath>#include <cstring>using namespace std;typedef long long ll; //将longlong类型进行定义 ll p; //定义一个素数pll fa...原创 2020-04-16 14:19:46 · 143 阅读 · 0 评论