数论
编号21212
SSL是母校,现前往新地图开拓中。
漫游于平行线间的灰鲤,于此处激起黑色孤独的水花。
展开
-
【递推】Ybt_传球游戏
说实话这题写过博客了,但之前写得太丑了ww题目解3<=n<=30,1<=m<=30.球只能左右传。所以对于第i个时间段,第j个人要么从他左边获得球,要么从他右边获得球。所以F[i][j]=F[i−1][j−1]+F[i−1][j+1]F[i][j] = F[i-1][j-1] + F[i-1][j+1]F[i][j]=F[i−1][j−1]+F[i−1][j+1]代码#include<cstdio>int n,m,f[40][40];int m原创 2020-12-26 10:31:21 · 115 阅读 · 0 评论 -
【递推】Ybt_数的划分
题目大意给出n,k。求出将n拆成k份,且每份不为空的方案数,任意两个方案不相同。即 (1,1,5)(1,5,1)(5,1,1)(1,1,5) (1,5,1)(5,1,1)(1,1,5)(1,5,1)(5,1,1) 将被看为1种。输入n,kn,kn,k输出答案。解设f[i][j]为整数i分成j份的方案数,显然i<j时f[i][j]=0,当i=j时f[i][j]=1接着考虑i>j的情况:当至少有一份为1时,则有f[i-1][j-1]种方案。当所有份都大于1时,则有f[i-j原创 2020-12-26 09:45:03 · 116 阅读 · 0 评论 -
【递推】Ybt_奇怪汉诺塔
题目大意要你求有 1~12 个圆盘时的四塔汉诺塔。每行一个答案。解设 d[i]d[i]d[i] 为三塔情况下将i个圆盘全部移动至目标塔的最小次数。易得,应将 i−1i-1i−1 个圆盘先移动至 BBB,再将最大的圆盘移动到 CCC ,最后将 i−1i-1i−1 个圆盘移动到 CCC 上。所以: d[i]=d[i−1]∗2+1d[i] = d[i-1] * 2 + 1d[i]=d[i−1]∗2+1设 f[i]f[i]f[i] 为四塔情况下将i个圆盘全部移动至目标塔的最小次数。先将 jjj原创 2020-12-26 08:48:50 · 145 阅读 · 0 评论 -
【递推】Ybt_错排问题
题目求多少个 nnn 个数的排列 AAA,满足对于任意的 i(1<=i<=n)Ai≠ii (1<=i<=n) Ai \neq ii(1<=i<=n)Ai=i 。其中 1<=n<=201<=n<=201<=n<=20输入一个数,n。输出一个整数,表示答案。解设 f[n]f[n]f[n] 为表示 nnn 个数的合法排列个数。考虑新增第 nnn 位,这个位置肯定不能排 nnn ,所以这个位置有 (n−1)(n-1)(n原创 2020-12-26 08:11:23 · 206 阅读 · 1 评论 -
【Map】【素数】2020牛客NOIP赛前集训营-普及组(第一场)C-牛牛的最大兴趣组
LinkOH—又是map题目解对于有 pn * k = a,可以简化为 pn%3 * k = a(即除去已经有的三次方。这些多余的数字对于答案并无什么贡献)简化完毕后我们会得到一个数x,设xd是最小的,能使 x * xd 为某个数的三次方的数。而xd也可以被某个数简化而成…于是答案便成了每对 x类数与xd 类数的数量间取最大者。因为假设你取完了,你不能去xd类里的数,不然就可以凑成某数的三次方。注意:本身就是三次方的数,他们简化后为1,相对的也为1。所以这类数只能取一个。原创 2020-10-26 21:55:27 · 251 阅读 · 0 评论 -
2020牛客NOIP赛前集训营-普及组(第二场)C-涨薪
这是一题快速幂,及坑人题。题目解快速幂:设c(p,n)为p的n次方,得当p为偶数:c(p,n)=(p,n/2)^2当p为奇数:c(p,n)=(p,n/2)^2*p代码#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>using namespace std;long long mo = 1000000007;long long n,m,原创 2020-10-22 18:33:27 · 135 阅读 · 0 评论 -
【三角形斜率】【数论】三角形(triangle)
题目描述平面上有n个点,求出用这些点可以构成的三角形数。输入第一行一个整数n。接下来n行,每行两个整数,表示点的坐标。输出输出仅一个整数,表示所求答案。输入样例50 01 11 -1-1 -1-1 1输出样例8思路先计算n个点(无限制)最多能构成的三角形数。然后计算斜率,去除斜率相同的两边连接的三点能构成的三角形数。代码#include<cstdio>#include<algorithm>#include<iostream&g原创 2020-09-18 20:31:33 · 2607 阅读 · 0 评论 -
T145120 最佳解答
题目解n方暴力,优化了些许变nlog(n)。n方:枚举TAB的长度,逐行计算长度nlog(n):枚举TAB的长度,与其的倍数。两个前缀和分别记录某个值到某个值中出现a[i]的数量,和a[i]值的总和。然后计算一下即可。代码#include<cstdio>#include<cmath>#include<iostream>#include<algorithm>using namespace std;long long n,a[10原创 2020-08-22 22:04:35 · 98 阅读 · 0 评论 -
【数论】简单游戏(easygame)
题目描述一天,小R准备找小h去游泳,当他找到小h时,发现小h正在痛苦地写着一列数,1,2,3,…n,于是就问小h痛苦的原因,小h告诉他,现在他要算1…n这些数里面,1出现的次数是多少,如n=11的时候,有1,10,11共出现4次1,现在给出n,你能快速给出答案么?输入一行,一个整数n输出一个整数,表示1…n中1出现的次数。输入样例11输出样例4说明对于30%的数据:n<=1000;对于100%的数据:n<=maxlongint;解推,找规律。代码#includ原创 2020-08-21 17:09:18 · 300 阅读 · 0 评论 -
【数论】X-因子链(factor)
题目描述给一个正整数X,一个长度为m的X-因子链是指这样一个序列:X0=1,X1,X2,。。。,Xm=X满足:Xi<Xi+1同时Xi|Xi+1(Xi+1能把Xi整除)要求X-因子链的最大长度Len和长度为Len的X-因子链的数量。输入一个正整数X输出一行,两个整数,分别表示最大长度和该长度链的种数。输入样例100输出样例4 6解分解质因数。然后预处理阶乘,即质因数的全排列,再将重复的质因数的排列去除。代码#include<cstdio>long long原创 2020-08-20 15:53:07 · 393 阅读 · 0 评论 -
【数论】分火腿
题目解有两种切法,像下面这样:第二种切法是优于第一种的,因为第一种切完之后小部分零件不一定能够平均分下去从而要多切几刀。第二种切着切着可能要切的地方就是这根火腿和另外一根火腿的分界,就少切一刀了。关于什么时候能少切一刀呢?每一份为n/m,化简一下为 (n/gcd(n,m) / (m/gcd(n,m) 。使 (一些n/m) 加在一起得到一个整数就可以少切一刀。已知除以gcd后分数线上下互质,那么凑的整数便是 (上下的最小公倍数/(m/gcd(n,m))然而这个并没有什么用,我们要的是多少份原创 2020-08-18 12:02:10 · 218 阅读 · 0 评论 -
【数论】洛谷P2671 求和
题目Sample-1 in6 25 5 3 2 2 22 2 1 1 2 1Sample-1 out82Sample-2 in15 45 10 8 2 2 2 9 9 7 7 5 6 4 2 42 2 3 3 4 3 3 2 4 4 4 4 1 1 1Sample-2 out1388解1. 分析题目发现三元组分数与y无关x,z同色x,z的位置i 必定同为双数或者同为单数2. 然后我们就可以把同色,同单双的数分到一类计算分数。3. 再简化计算公式,用原创 2020-08-17 20:12:15 · 157 阅读 · 0 评论 -
【数论】阶乘
《关于一些细节造就的悲剧》《怎么TLE了》《怎么又WA了》… …《?》题目输入第一行有一个正整数T,表示测试数据的组数。接下来的T行,每行输入两个十进制整数n和base。输出对于每组数据,输出一个十进制整数,表示在base进制下,n!结尾的零的个数。样例输入210 10 10 2样例输出28题目大意/转化n!最大可以整除base的多少次方。(根据十进制转换base进制方式得)解分解base的质因数P。然后在n!里提取足够数量的P来合成base,最终答案为能合原创 2020-08-17 16:53:09 · 212 阅读 · 1 评论 -
【数论】双端队列xLIS问题
题目解对于数列中的某个点:求从它开始下降的最长子序列,这个序列将倒过来接到某点前面,成为最终的序列的前半段;求从它开始上升的最长子序列,这个序列将倒过来接到某点后面,成为最终的序列的后半段;最终答案为某个点两种子序列长度的和再减去1(因为统计了两次自己)其余的操作其实都可以省略。(无法更优)Code#include<cstdio>#include<cstring>#include<iostream>using namespace std;i原创 2020-08-14 22:17:37 · 237 阅读 · 0 评论 -
【组合】奶牛编号
题目描述作为一个神秘的电脑高手,Farmer John 用二进制数字标识他的奶牛。然而,他有点迷信,标识奶牛用的二进制数字,必须只含有K位“1” (1 <= K <= 10)。 当然,每个标识数字的首位必须为“1”。FJ按递增的顺序,安排标识数字,开始是最小可行的标识数字(由“1”组成的一个K位数)。不幸的是,他没有记录下标识数字。请帮他计算,第N个标识数字 (1 <= N <= 10^7)。输入第1行:空格隔开的两个整数,N和K。输出如题,第N个标识数字输入样例原创 2020-08-13 15:51:17 · 184 阅读 · 0 评论 -
【数论】异或
题目描述SarvaTathagata是个神仙,一天他在研究数论时,书上有这么一个问题:求不超过n两两的数的gcd。SarvaTathagata这么神仙的人当然觉得这个是sb题啦。学习之余,他还发现gcd的某一个特别好的性质:如果有两个数i,j满足gcd(i,j)=ij(这里的为c++中的异或)的话,那么这两个数组成的数对(i,j)就是一个nb的数对(这里认为(i,j)和(j,i)为相同的,并不需要计算2次)。当然,SarvaTathagata并不会只满足于判断一个数对是否nb,他还想知道满足两个数都是原创 2020-08-11 14:50:11 · 164 阅读 · 0 评论 -
【模板】【拓展欧几里得】洛谷P1082 同余方程
题目思路看着大佬这篇——题解写的。Code#include<cstdio>long long x = 1,y,l,a,b;void gcd(long long aa, long long bb){ if(bb == 0) return; gcd(bb,aa%bb); l = x; x = y; y = l-aa/bb*y; return;}int main(){ scanf("%lld%lld",&a,&b); gcd(a,b); x =原创 2020-08-09 20:44:05 · 141 阅读 · 0 评论 -
【数论】【JZOJ】2752数列(sequence)
哎呀,在输入这里卡了好久QWQ把一个正整数分成一列连续的正整数之和。这个数列必须包含至少两个正整数。你需要求出这个数列的最小长度。如果这个数列不存在则输出-1。Input每行包含一个正整数n。每个文件包含多行,读入直到文件结束。Output对于每个n,输出一行,为这个数列的最小长度。思路对于每个n·当它是奇数且不为1,答案是2·当它是偶数我们可以考虑一下两种情况:可以分...原创 2020-02-02 21:41:22 · 253 阅读 · 0 评论 -
【模拟】杯子
小明买了N个容积可以是无穷大的杯子,刚开始的时候每个杯子里有1升水,接着小明发现杯子实在太多了,于是他决定保留不超过K个杯子。每次他选择两个当前含水量相等的杯子,把一个杯子的水全部倒进另一个里,然后把空瓶丢弃。(不能丢弃有水的杯子)显然在有些情况下小明无法达到他的目标,比如N=3,K=1。此时小明会重新买一些新的杯子(新杯子容积无限,开始时有1升水),以达到目标。现在小明想知道,最少需要买多少...原创 2019-08-07 17:06:22 · 367 阅读 · 0 评论 -
【二进制处理】洛谷P1100_高低位交换
Link熟悉了位运算之后发现这。。。真的是一道橙题思路我们需要位移操作,即"<<“这玩意,和”>>"这玩意。a<<b就是将a的二进制左移b位,相当于a*(2^b)a>>b就是将a的二进制右移b位,相当于a/(2^b)(而且这玩意会把尾数吃掉)然后就很简单了。#include<cstdio>long long n,a,b;...原创 2019-08-06 16:43:58 · 241 阅读 · 0 评论 -
POJ【前缀和】Tallest cow
FJ’s N (1 ≤ N ≤ 10,000) cows conveniently indexed 1…N are standing in a line. Each cow has a positive integer height (which is a bit of secret). You are told only the height H (1 ≤ H ≤ 1,000,000) of t...原创 2019-08-06 09:58:38 · 245 阅读 · 0 评论 -
2002年分区联赛普级组之二 选数
题目已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n=4,k=3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它们的和为: 3+7+12=22 3+7+19=29 7+12+19=38 3+12+19=34。 现在,要求你计算出和为素数共有多少种。 例如上例...原创 2018-08-22 10:40:27 · 130 阅读 · 0 评论 -
2006年分区联赛普级组之三 JAM计数法
题目Jam 是个喜欢标新立异的科学怪人,他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩。在他的计数法中,每个数字的位数都是相同的(使用相同个数的字母),英文字母按原先的顺序,排在前面的字母小于排在它后面的字母。我们把这样的“数字”成为Jam 数字。在Jam 数字中,每个字母互不相同,而且从左到右都是严格递增的。每次,Jam 还指定使用字母的范围,如从2 到...原创 2018-08-22 10:50:33 · 155 阅读 · 0 评论 -
【非递归】全排列
题目列出所有数字1到数字n的连续自然数的排列,要求所产生的任一数字序列中不允许出现得复数字。 输入 一个数,n 输出 所有的排列,一行一个思路生成排列: ① 从后面向前找,直到找到一个顺序(由大到小)为止。 算法为:j=n;while (a[j]&lt;a[j-1]) j--;② 然后在a[j],a[j+1],…,a[n]中找出一个比a[j-1]大的最小...原创 2018-08-21 16:50:36 · 526 阅读 · 0 评论 -
【非递归】错位排列
题目按字典顺序输出错位排列 输入 n 输出 所有的错位排列,一行一个思路我,特别特别特别懒所以直接拿全排列改了。。。详见: https://blog.csdn.net/qq_42937087/article/details/81910492代码#include&lt;cstdio&gt;#include&lt;algorithm&gt;using name...原创 2018-08-22 10:34:24 · 481 阅读 · 0 评论 -
组合
题目求组合C(n,m) 1&amp;lt;=n,m&amp;lt;=10(明天回来打注释 输入 n m 输出 所有组合,每行一个思路深搜或者那个叫啥模拟?吧。。。代码代码1:非递归#include&amp;lt;cstdio&amp;gt;#include&amp;lt;algorithm&amp;gt;using namespace std原创 2018-08-21 22:03:46 · 109 阅读 · 0 评论 -
错排问题
题目某人写了n封信和n个信封,如果所有的信都装错了信封。求所有的信都装错信封共有多少种不同情况。 输入 n 输出 情况总数思路公式了解一下~嘻嘻。 C(n) = (n-1) [C(n-2) + C(n-1)] C(1)=0; C(2)=1;代码#include&amp;lt;cstdio&amp;gt;using namespace std;int main(){ ...原创 2018-08-22 10:43:59 · 242 阅读 · 0 评论 -
步步高升
题目春节的时候TENSHI去逛花市。她来到一个卖盆竹的摊位,看到一盆叫做“步步高升”的盆竹。“步步高升,步步高升……”学习就是要一步一步来,不能急,要打好基础。在稳固的基础上才谈得上步步高升!TENSHI若有所思。她看到这盆东西好意头,于是想买下。谁知一问价钱,“不贵不贵,才2xxRMB。”TENSHI差点没昏倒,囊中羞涩嘛。但是TENSHI还是很想买下来,于是她就在一旁观察。观察了一段时间,...原创 2018-08-22 14:53:55 · 457 阅读 · 0 评论 -
杨辉三角形
题目金典啊,不想写 输入 n(n&lt;=10)表示层数 输出 杨辉三角思路直接用一个一位数组存当前行,从后面开始一个一个求,也就是a[i]=a[i]+a[i-1],完全不影响前面。代码//不想写注释,水啊#include&lt;cstdio&gt;using namespace std;int main(){ int j,a[11],i,n; ...原创 2018-08-22 15:02:33 · 101 阅读 · 0 评论 -
【高精/快速幂】麦森数
题目形如2^P-1的素数称为麦森数,这时P一定也是个素数。但反过来不一定,即如果P是个素数,2^P-1不一定也是素数。到1998年底,人们已找到了37个麦森数。最大的一个是P=3021377,它有909526位。麦森数有许多重要应用,它与完全数密切相关。 任务:从文件中输入P(1000<P<3100000),计算2^P-1的位数和最后500位数字(用十进制高精度数表示) 输入 一...原创 2018-09-08 11:37:16 · 299 阅读 · 0 评论 -
【2019.1.23】【大暴力找规律】纪中C组T3——【市选模拟】游戏
题目描述玩家1和玩家2在N*N的棋盘玩游戏,一开始皇后被放置在棋盘上的某个位置,两人轮流移动,玩家1先移。每次移动玩家可以把皇后向左边移动若干步,或者向下面移动若干步,或者沿着左下方的斜线移动若干步。如下图,“X”表示皇后”Q”一次移动可以移到的位置。游戏将会以皇后到达左下角而告终。谁把皇后移到左下角就获胜。例如下图:玩家2将获得比赛的胜利。告诉你皇后一开始的位置。你的任务是计算出最后...原创 2019-01-24 08:05:36 · 202 阅读 · 0 评论 -
【模拟】【数论】GCD与LCM
给出某两个整数a和b(a<=b)的最大公约数GCD和最小公倍数LCM,请找出满足的a和b,使得b-a的值最小。Input输入数据只有一行,包括两个整数GCD和LCM。输入保证至少存在一组解。Output输出包含一个整数,为最小的b-a的值。Sample Input6 36Sample Output6已知:a=GCDaa;b=GCDbb;而GCD* aabb=LC...原创 2019-07-11 16:39:43 · 182 阅读 · 4 评论 -
【找规律/数论】游戏
Atlantis Island 沉没以前,传说中的猫老大和 King 是好朋友……King 很喜欢赌博,这次 King和老朋友猫老大多年不见, 于是便邀请猫老大来玩一个游戏,猫老大应邀参加了。 King 拿出了 n 块黄金(0<n<10^1000002), 猫老大暗自想:咋来这么多钱的„„,现在 King 和猫老大轮流从黄金中拿走一些,每人每次拿走的块数是 2 的次方(例如 1,2,4...原创 2019-07-09 12:02:28 · 265 阅读 · 0 评论 -
【卡特兰数】【高精】WZK打雪仗(war)
【题目背景】一中操场的格局,同别处不大一样…其实也差不多。又到冬天了,WZK组织了好多人去打雪仗。WZK一帮共2N人挖了一个以(0,0)为圆心的圆,所有人都在圆周上作战(不在圆的内部)。但是毕竟WZK要调兵遣将了,而且同学们孤军奋战很无聊,所以其中的N个人每个人会前往另一个人那里结伴作战,在途中同学们只会走两点所连的直线。但是同学们是很小心的,所以一旦发现地面上有一条脚印横在眼前的时候,为了...原创 2019-07-08 21:06:41 · 242 阅读 · 0 评论 -
【斐波那契】【递归】无限序列
我们按以下方式产生序列:1、 开始时序列是: “1” ;2、 每一次变化把序列中的 “1” 变成 “10” ,“0” 变成 “1”。经过无限次变化,我们得到序列"1011010110110101101…"。总共有 Q 个询问,每次询问为:在区间A和B之间有多少个1。任务 写一个程序回答Q个询问Input第一行为一个整数Q,后面有Q行,每行两个数用空格隔开的整数a, b。Outpu...原创 2019-06-01 14:37:38 · 275 阅读 · 0 评论 -
【数论】小X的密码破译
第100篇博客祭。嗯、、、如题目描述。#include<cstdio>const int x=11111111;bool l[x];long long cnt,n,a,b,c,ans=0;int main(){ scanf("%lld%lld%lld%lld",&n,&a,&b,&c); for(register int i=1;i<...原创 2019-04-13 16:36:47 · 158 阅读 · 0 评论 -
【规律】【模拟】小X的矩阵
小X最近迷上了矩阵,他定义了一个对于一种特殊矩阵的特征函数G。对于NN的矩阵A,A的所有元素均为0或1,则G(A)等于所有A[i][j]A[j][i]的和对2取余之后的结果。举一个例子:对于上图这个33矩阵A,G(A)=(11+10+11+01+11+10+11+ 01+00) mod 2=0当然询问一个矩阵的G值实在是太简单了。小X在给出一个N*N矩阵的同时将给你Q个操作,操作描述如下:...原创 2019-04-11 16:45:04 · 199 阅读 · 0 评论 -
【数论】分数拆分
思路1/k=1/x+1/y;然后x>=y,枚举y从k+1到2* k。因为x==y的情况是1/k=1/(k * 2)+1/(k *2)code#include<cstdio>int k,ans=0;int main(){ scanf("%d",&k); for(int i=k+1;i<=2*k;++i) if((i*k)%(i-k)==0) ...原创 2019-03-30 15:03:32 · 113 阅读 · 0 评论 -
【数论】约数个数
这题是个大水题,只不过数据稍微大了点。结果大家都用那啥的模拟。结果哈哈哈哈哈哈。成功把T3沙雕SPFA+优化结果爆0的失误补回来了哈哈哈。题目大意求a-b之间每个数的约数个数的总和。Input一行两个正整数a、b,以一个空格隔开。Output一行一个整数,即答案。【数据范围】对于50%的数据,1≤a≤b≤1000;对于100%的数据,1≤a≤b≤10,000,000。思路50...原创 2019-03-08 22:13:26 · 193 阅读 · 0 评论 -
【高精】求组合数(公式,杨辉三角)
题目给出m,n(m,n&amp;amp;amp;amp;lt;100),求C(n,m)的值 输入 100 20 输出 535983370403808682970思路高精+类似杨辉三角的东东,见下图,其实就是个杨辉三角。不过次数为0的地方为1而已。。。 代码#include&amp;amp;amp;amp;lt;cstdio&amp;amp;amp;amp;gt;const int w=20原创 2018-08-22 16:06:14 · 1687 阅读 · 0 评论