数论
Nicolas Lee
Yesterday you said tomorrow
展开
-
Triangle Counting UVA - 11401 数三角形 递推
题目链接有多少种方法可以从1. 2.3. .... n 中选出3 个不同的整数,使得以它们为主边长可以组成三角形?比如n=5 时有3 种方法,即(2 ,3 ,4) , (2,3,5), (3人5) 0 n=8 时有22 种方法。【输入格式】输入包含多组测试数据,每组数据的第一行为整数n (3!::三n 运1000000) 。输入用n<3的标志结束。【输出格式】对于每组数据,输出...原创 2019-05-12 17:06:20 · 277 阅读 · 0 评论 -
2014第五届蓝桥杯国赛c/c++本科B组试题 4. 生物芯片 完全平方数等价因子数为奇数
X博士正在研究一种生物芯片,其逻辑密集度、容量都远远高于普通的半导体芯片。 博士在芯片中设计了 n个微型光源,每个光源操作一次就会改变其状态,即:点亮转为关闭,或关闭转为点亮。 这些光源的编号从 1 到 n,开始的时候所有光源都是关闭的。博士计划在芯片上执行如下动作: 所有编号为2的倍数的光源操作一次,也就是把 2 4 6 8 … 等序号光源打开所有编号为3的倍数的光源操作一次, 也就是对 ...原创 2019-04-21 22:02:28 · 247 阅读 · 0 评论 -
2014第五届蓝桥杯国赛c/c++本科B组试题 2. 出栈次序 卡特兰数
X星球特别讲究秩序,所有道路都是单行线。一个甲壳虫车队,共16辆车,按照编号先后发车,夹在其它车流中,缓缓前行。路边有个死胡同,只能容一辆车通过,是临时的检查站,如图【p1.png】所示。X星球太死板,要求每辆路过的车必须进入检查站,也可能不检查就放行,也可能仔细检查。如果车辆进入检查站和离开的次序可以任意交错。那么,该车队再次上路后,可能的次序有多少种? 为了方便起见,假...原创 2019-04-21 20:28:45 · 331 阅读 · 0 评论 -
算法训练 最大体积 扩展欧几里得+完全背包
题目链接问题描述 每个物品有一定的体积(废话),不同的物品组合,装入背包会战用一定的总体积。假如每个物品有无限件可用,那么有些体积是永远也装不出来的。为了尽量装满背包,附中的OIER想要研究一下物品不能装出的最大体积。题目保证有解,如果是有限解,保证不超过2,000,000,000 如果是无限解,则输出0分析:当n个数的最大公约数不为1的时候,凑不到的数的个数是无数个(扩展欧...原创 2019-03-30 19:33:32 · 377 阅读 · 0 评论 -
历届试题 包子凑数 扩展欧几里得+完全背包
题目链接问题描述 小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子。每种蒸笼都有非常多笼,可以认为是无限笼。 每当有顾客想买X个包子,卖包子的大叔就会迅速选出若干笼包子来,使得这若干笼中恰好一共有X个包子。比如一共有3种蒸笼,分别能放3、4和5个包子。当顾客想买11个包子时,大叔就会选2笼3个的再加1笼5个的(也可能选出1笼3个...原创 2019-03-18 23:13:40 · 332 阅读 · 0 评论 -
历届试题 k倍区间 前缀和
题目链接问题描述 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间。 你能求出数列中总共有多少个K倍区间吗?做法:首先统计前缀和sum[i] 表示A1+A2+…+Ai.所以对于任意一段区间[l,r]的和就是sum[r]-sum[l-1].如...原创 2019-03-18 21:25:34 · 351 阅读 · 0 评论 -
2018 第九届蓝桥杯省赛B组 C++/c 乘积尾零
如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零?5650 4542 3554 473 946 4114 3871 9073 90 43292758 7949 6113 5659 5245 7432 3051 4434 6704 35949937 1173 6866 3397 4759 7557 3070 2287 1453 98991486 5722 31...原创 2019-03-21 21:53:00 · 193 阅读 · 0 评论 -
Repeating Decimals UVA - 202 循环小数
题目链接输入整数a和b(0≤a≤3000,1≤b≤3000),输出a/b的循环小数表示以及循环节长度。例如a=5,b=43,小数表示为0.(116279069767441860465),循环节长度为21。分析: 重复将分子a变为(b,10b)(分母为b)范围内的整数,如果该a重复出现这,则循环起点为上一次a出现的位置,循环终点为当前的前一个位置。#include <cstd...原创 2019-03-07 18:53:46 · 262 阅读 · 0 评论 -
算法训练 进制转换 将十进制数转为负进制数
题目链接问题描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式。例如:123可表示为 1*102+2*101+3*100这样的形式。 与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数字所处位置的(值-1)为指数,以2为底数的幂之和的形式。一般说来,任何一个正整数R或一个负整数-R...原创 2019-03-08 21:17:17 · 1122 阅读 · 0 评论 -
算法训练 数列
题目链接锦囊1进制处理。锦囊2先把原数按二进制的方法转成二进制,然后再把转换后的数看成k进制,再转换回来。问题描述 给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是: 1,3,4,9,10,12,13,… (该序列实际上就是:3^0,3^1,3^0+3^1,3^2,3^0+3^2...原创 2019-03-03 16:51:07 · 613 阅读 · 0 评论 -
Polygon UVA - 11971 多边形
题目链接有一根长度为n的木条,随机选k个位置把它们切成k+1段小木条。求这些小木条能组成一个多边形的概率。【分析】 不难发现本题的答案与n无关。在一条直线上切似乎难以处理,可以把直线接成一个圆,多切一下,即在圆上随机选k+1个点,把圆周切成k+1段。根据对称性,两个问题的答案相同。 新问题就要容易处理得多了:“组不成多边形”的概率就是其中一个小木条至少跨越了半个圆周的概率...原创 2019-03-01 20:27:00 · 292 阅读 · 0 评论 -
欧拉函数
约数的个数。给出正整数n的唯一分解式 ,求n的正约数的个数。【分析】 不难看出,n的任意正约数也只能包含p1, p2, p3等素因子,而不能有新的素因子出现。对 于n的某个素因子pi,它在所求约数中的指数可以是0, 1, 2,…, ai共ai+1种情况,而且不同的素 因子之间相互独立。根据乘法原理,n的正约数个数为:小于n且与n互素的整数个数。给出正整数n的唯一分解式 ,求1...原创 2019-04-26 16:33:41 · 249 阅读 · 0 评论 -
2018蓝桥杯C语言b组国赛 6.矩阵求和 欧拉函数+莫比乌斯反演
第六题标题:矩阵求和经过重重笔试面试的考验,小明成功进入 Macrohard 公司工作。 今天小明的任务是填满这么一张表: 表有 n 行 n 列,行和列的编号都从1算起。 其中第 i 行第 j 个元素的值是 gcd(i, j)的平方, gcd 表示最大公约数,以下是这个表的前四行的前四列: 1 1 1 1 1 4 1 4 1 1 9 1 1 4 1 16小明突然冒出一个奇怪的想法,他...原创 2019-04-27 21:06:51 · 677 阅读 · 1 评论 -
Chess Queen UVA - 11538 象棋中的皇后 排列组合问题
在2x2 棋盘上放两个相互攻击的皇后( 一白一黑) , 一共有12 种方法,如图2-1 所示。图2 -1如果棋盘是nXm 的,有多少种方法放置两个相互攻击的皇后?例如n=1 00, m=223 时答案为10 907 100 。【输入格式】输入由不超过5000 行组成,每行均为-组数据,包含两个整数n, m (0 运n,m~二10勺。输入结束标志为n=m=O 。【输出格式】对于每组数据,...原创 2019-05-12 16:42:58 · 344 阅读 · 0 评论 -
历届试题 小数第n位
题目链接 蓝桥杯---历届真题 题解问题描述 我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。 如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式。 本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始的3位数。输入格式 一行三个整数:a b n,用空...原创 2019-05-21 20:33:24 · 554 阅读 · 0 评论 -
算法训练 麦森数 二分+高精度
题目链接 蓝桥杯 算法训练---------题解锦囊1二分,高精度计算。锦囊2使用数组来保存答案的最后500位,实现乘法运算。计算幂时使用二分,则计算a^b先算a^(floor(b/2)),再平方一下,根据需要看是不是再乘a。问题描述 形如2P-1的素数称为麦森数,这时P一定也是个素数。但反过来不一定,即如果P是个素数,2P-1不一...原创 2019-05-10 21:39:59 · 495 阅读 · 0 评论 -
Code Feat UVA - 11754 中国剩余定理
题目链接有一个正整数N 满足C 个条件,每个条件都形如"它除以X 的余数在集合{Yt. Y2, ..., Yk}中",所有条件中的X 两两互素,你的任务是找出最小的S 个解。【分析】"除以X 的余数在集合{Y1 ,Y2. . ., Yk} 中"这个条件很不好处理。如果我们知道这个余数具体是中的哪一个,问题就会简单很多。一种容易想到的方法是枚举每个集中取哪个元素,它可以解决样例。样例有3...原创 2019-05-19 23:27:50 · 294 阅读 · 0 评论 -
GCD - Extreme (II) UVA - 11426 最大公约数之和
题目链接输入正整数n , 求gcd(1 ,2)+gcd(1 ,3)+gcd(2,3)+. . . +gcd(n-1,n)时,即所有满足1 <= i <j<=n 的数对(i,j)所对应的gcd(i,j)之和。比如n= l0 时答案为67 , n=100 时答案为13 015 , n=200 000时答案为143295493 160 。【输入格式】输入包含不超过100 组数据...原创 2019-05-19 15:06:32 · 383 阅读 · 0 评论 -
Always an integer UVALive - 4119 总是整数
题目链接组合数学主要研究计数问题。比如,从n 个人中选两个人有多少种方法?圆周上有n个点,两两相连之后最多能把圆面分成多少部分?如图2-16 所示。有一个金字塔,从塔顶开始每一层分别有1 x 1 , 2x2, ..., nXn 个小立方体,问一共有多少个小立方体?很多问题的答案都可以写成n 的简单多项式。比如上述第一个问题的答案是n(n一1)/2 ,也就是(n^2 -n)/2 ; 第二个问...原创 2019-05-18 22:00:05 · 196 阅读 · 0 评论 -
Cheerleaders UVA - 11806 啦啦队 容次原理+二进制枚举
在一个m 行n 列的矩形网格里放k 个相同的石子,问有多少种方法?每个格子最多放一个石子,所有石子都要用完,并且第一行、最后一行、第一列、最后一列都得有石子。【输入格式】输入第一行为数据组数r (T~三50) ,每组数据包含3 个整数m, n, k (2 运m乒乓2 0 ,k~三500) 。【输出格式】对于每组数据,输出方案总数除以1000007 的余数。【分析】如果题目求的是"...原创 2019-05-13 21:24:23 · 250 阅读 · 0 评论 -
扩展欧几里得算法
扩展欧几里得算法简介扩展欧几里得算法扩展欧几里得算法的功能就更强大了,它可以用来求二元一次方程的通解,还可以用来求乘法逆元。在此顺便简介一下乘法逆元:若有 a*x ≡ 1 (mod m),则称 x 为a关于m的乘法逆元,等价式 a * x+m * y = 1这就也是个二元一次方程了,ExGcd可搞。引理裴蜀定理:若ax+by = z,则 gcd(a,b)| z :g(a,b...转载 2019-04-23 20:24:56 · 228 阅读 · 0 评论 -
2016第七届蓝桥杯国赛决赛c/c++本科B组 1.一步之遥 扩展欧几里得算法
1.一步之遥从昏迷中醒来,小明发现自己被关在X星球的废矿车里。 矿车停在平直的废弃的轨道上。 他的面前是两个按钮,分别写着“F”和“B”。小明突然记起来,这两个按钮可以控制矿车在轨道上前进和后退。 按F,会前进97米。按B会后退127米。透过昏暗的灯光,小明看到自己前方1米远正好有个监控探头。 他必须设法使得矿车正好停在摄像头的下方,才有机会争取同伴的援助。或许,通过多次操作F和B...原创 2019-04-23 20:02:25 · 272 阅读 · 0 评论 -
Probability UVA - 11346 概率
题目链接在[-a,a]*[-b,b]区域内随机取一个点P,求以(0,0)和P为对角线的长方形面积大于S的概率(a,b>0,S≥0)。例如a=10,b=5,S=20,答案为23.35%。【分析】根据对称性,只需要考虑[0,a]*[0,b]区域取点即可。面积大于S,即xy>S。xy=S是一条双曲线,所求概率就是[0,a]*[0,b]中处于双曲线上面的部分。为了方便,还是求曲线下...原创 2019-03-01 19:38:51 · 222 阅读 · 0 评论 -
Candy UVA - 1639 糖果 对数精度处理+数学期望
题目链接有两个盒子各有n(n≤2*105)个糖,每天随机选一个(概率分别为p,1-p),然后吃一颗糖。直到有一天,打开盒子一看,没糖了!输入n, p,求此时另一个盒子里糖的个数的数学期望。【分析】 根据期望的定义,不妨设最后打开第1个盒子,此时第2个盒子有i颗,则这之前打开过n+(n-i)次盒子,其中有n次取的是盒子1,其余n-i次取的盒子2,概率为C(2n-i, n...原创 2019-02-28 21:05:39 · 469 阅读 · 0 评论 -
算法训练 素因子去重
题目链接问题描述 给定一个正整数n,求一个正整数p,满足p仅包含n的所有素因子,且每个素因子的次数不大于1分析:之前写了需要判断是素数(虽然通过了);后面发现是不需要判断的。因为当你每次去掉一个素因子后,这个因子的倍数就会不存在了。这个和素数筛选差不多,只不过素数筛选是标记,这里是删除。 因为i从最小的质因子2开始并且每次循环结束得到的新的n都已经不再包含上一个质...原创 2019-01-31 14:51:09 · 3733 阅读 · 13 评论 -
Critical Mass UVA - 58 危险的组合 递推
题目链接【分析】 设答案为f(n)。既然有3个U放在一起,可以根据这3个U的位置分类——对,根据前面的经验,要根据“最左边的3个U”的位置分类。假定是i、i+1和i+2这3个盒子,则前i-1个盒子不能有3个U放在一起的情况。设n个盒子“没有3个U放在一起”的方案数为g(n)=2n-f(n),则前i-1个盒子的方案有g(i-1)种。后面的n-i-2个盒子可以随便选择,有2n-i-...原创 2019-02-27 19:22:59 · 467 阅读 · 1 评论 -
算法训练 Hanoi问题 数学归纳法
题目链接问题描述 如果将课本上的Hanoi塔问题稍做修改:仍然是给定N只盘子,3根柱子,但是允许每次最多移动相邻的M只盘子(当然移动盘子的数目也可以小于M),最少需要多少次? 例如N=5,M=2时,可以分别将最小的2个盘子、中间的2个盘子以及最大的一个盘子分别看作一个整体,这样可以转变为N=3,M=1的情况,共需要移动7次。【分析】 首先分析普通的汉诺塔问题...原创 2019-02-27 16:44:32 · 666 阅读 · 0 评论 -
算法提高 Torry的困惑(提高型) 素数筛选
问题描述 Torry从小喜爱数学。一天,老师告诉他,像2、3、5、7……这样的数叫做质数。Torry突然想到一个问题,前10、100、1000、10000……个质数的乘积是多少呢?他把这个问题告诉老师。老师愣住了,一时回答不出来。于是Torry求助于会编程的你,请你算出前n个质数的乘积。不过,考虑到你才接触编程不久,Torry只要你算出这个数模上50000的值。#include &...原创 2019-02-22 21:21:11 · 289 阅读 · 0 评论 -
Colossal Fibonacci Numbers! UVA - 11582 巨大的斐波那契数!
题目链接 输入两个非负整数a、b和正整数n(0≤a,b<264,1≤n≤1000),你的任务是计算f(ab)除以n的余数。其中f(0)=f(1)=1,且对于所有非负整数i,f(i+2)=f(i+1)+f(i)。【分析】所有计算都是对n取模的,不妨设F(i)=f(i) mod n。不难发现,当二元组(F(i), F(i+1))出现重复时,整个序列就开始重复。例如,n=3,序列F(i)...原创 2019-02-17 20:49:35 · 193 阅读 · 0 评论 -
算法提高 快速幂
题目链接问题描述 给定A, B, P,求(A^B) mod P。分析:使用分治思想:快速幂。时间复杂度为O(logn)。 如:a29=(a14)2*a,而a14=(a7)2,a7=(a3)2*a,a3=a2*a,一共只做了7次乘法。注意:longlong*longlong有可能会溢出#include <cstdio>long long n, m, p;l...原创 2019-02-17 17:05:17 · 322 阅读 · 0 评论 -
算法提高 素数求和 Eratosthenes素数筛法
题目链接问题描述 输入一个自然数n,求小于等于n的素数之和样例输入2样例输出2数据规模和约定 测试样例保证 2 <= n <= 2,000,000 Eratosthenes素数筛法 具体解释:算法提高 找素数 Eratosthenes素数筛法#include <cstdio>#include <cmath>...原创 2019-02-17 16:29:20 · 307 阅读 · 0 评论 -
算法提高 找素数 Eratosthenes素数筛法
题目链接问题描述 给定区间[L, R] , 请计算区间中素数的个数。【分析】对于这样的限制,直接枚举判断会超时:需要判断10^6个整数,而每个整数还需要花费一定的时间判断是否为素数。用Eratosthenes筛法构造1~n的素数表。筛法的思想特别简单:对于不超过n的每个非负整数p,删除2p, 3p, 4p,…,当处理完所有数之后,还没有被删除的就是素数。如果用vis[i]表示...原创 2019-02-17 15:22:48 · 909 阅读 · 1 评论 -
GCD XOR UVA - 12716 GCD等于XOR
题目链接 输入整数n(1≤n≤30000000),有多少对整数(a,b)满足:1≤b≤a≤n,且gcd(a,b)=a XORb。例如n=7时,有4对:(3,2), (5,4), (6,4), (7,6)。【分析】 本题看上去很难找到简洁的数学公式,因为gcd和xor看上去似乎毫不相干。不过xor的好处是:a xor b = c,则a xor c = b,所以可以枚举a和c...原创 2019-02-22 14:38:41 · 473 阅读 · 0 评论 -
Minimum Sum LCM UVA - 10791 最小公倍数的最小和
题目链接输入整数n(1≤n<231),求至少两个正整数,使得它们的最小公倍数为n,且这些整数的和最小。输出最小的和。【分析】本题再次用到了唯一分解定理。设唯一分解式n=a1^p1*a2^p2…,不难发现每个ai^pi作为一个单独的整数时最优。如果就这样匆匆编写程序,可能会掉入陷阱。本题有好几个特殊情况要处理:n=1时答案为1+1=2;n只有一种因子时需要加个1,还要注意n=231-...原创 2019-02-22 12:57:38 · 263 阅读 · 0 评论 -
Irrelevant Elements UVA - 1635 无关的元素
对于给定的n个数a1, a2, … , an,依次求出相邻两数之和,将得到一个新数列。重复上述操作,最后结果将变成一个数。问这个数除以m的余数与哪些数无关?例如n=3,m=2时,第一次求和得到a1+a2,a2+a3,再求和得到a1+2a2+a3,它除以2的余数和a2无关。1≤n≤105,2≤m≤109。【分析】显然最后的求和式是a1,a2, … , an的线性组合。设ai的系数为f(i),则...原创 2019-02-23 13:50:55 · 269 阅读 · 0 评论 -
算法提高 欧拉函数
题目链接问题描述 给定一个大于1,不超过2000000的正整数n,输出欧拉函数,phi(n)的值。 如果你并不了解欧拉函数,那么请参阅提示。提示 欧拉函数phi(n)是数论中非常重要的一个函数,其表示1到n-1之间,与n互质的数的个数。显然的,我们可以通过定义直接计算phi(n)。 当然,phi(n)还有这么一种计算方法。 首先我们对n进行质因数分解,不妨设n=p...原创 2019-02-23 15:17:38 · 667 阅读 · 0 评论 -
Disgruntled Judge UVA - 12169 不爽的裁判 扩展欧几里得算法
题目链接 有个裁判出的题太难,总是没人做,所以他很不爽。有一次他终于忍不住了,心想:“反正我的题没人做,我干嘛要费那么多心思出题?不如就输入一个随机数,输出一个随机数吧。” 于是他找了3个整数x1、a和b,然后按照递推公式xi=(axi-1+b) mod 10001计算出了一个长度为2T的数列,其中T是测试数据的组数。然后,他把T和x1, x3,…, x2T-1写到...原创 2019-02-19 15:24:54 · 398 阅读 · 0 评论 -
Crossing Rivers UVA - 1223 过河
题目链接 你住在村庄A,每天需要过很多条河到另一个村庄B上班。B在A的右边,所有的河都在中间。幸运的是,每条河上都有匀速移动的自动船,因此每当到达一条河的左岸时,只需等船过来,载着你过河,然后在右岸下船。你很瘦,因此上船之后船速不变。日复一日,年复一年,你问自己:从A到B,平均情况下需要多长时间?假设在出门时所有船的位置都是均匀随机分布。如果位置不是在河的端点处,则朝向也是均匀随...原创 2019-02-28 19:56:00 · 249 阅读 · 0 评论 -
Pole Arrangement UVA - 1638 杆子的排列
题目链接有高为1, 2, 3,…, n的杆子各一根排成一行。从左边能看到l根,从右边能看到r根,求有多少种可能。例如,图10-9中的两种情况都满足l=1,r=2(1≤l,r≤n≤20)。【分析】设d(i,j,k)表示让高度为1~i根杆子排成一行,从左边能看到j根,从右边能看到k根的方案数。为了方便起见,假定i≥2。如何进行递推呢?首先尝试按照从小到大的顺序按照各个杆子。假设已经安排完...原创 2019-02-28 19:13:44 · 333 阅读 · 0 评论 -
Double Patience UVA - 1637 概率+记忆搜索
题目链接36张牌分成9堆,每堆4张牌。每次可以拿走某两堆顶部的牌,但需要点数相同。如果有多种拿法则等概率的随机拿。例如,9堆顶部的牌分别为KS, KH, KD, 9H, 8S, 8D, 7C, 7D,6H,则有5种拿法(KS,KH), (KS,KD), (KH,KD), (8S,8D), (7C,7D),每种拿法的概率均为1/5。如果最后拿完所有牌则游戏成功。按顺序给出每堆牌的4张牌,求成功...原创 2019-02-24 20:49:57 · 217 阅读 · 0 评论