数论
HelloWorld10086
追随大神的脚步
展开
-
UVA 575-Skew Binary
A - Skew BinaryTime Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %lluSubmitStatusPracticeUVA 575Description When a number is expressed in decimal, the k-th digit rep原创 2014-07-20 16:09:44 · 652 阅读 · 0 评论 -
Hnu 13190 Fractional Lotion(数论)
题意: 题目给出1/n,求(x,y)满足下面的等式的有多少组。 1/x + 1/y = 1/n解析: 令 x = n+k 1/(n+k) + 1/y = 1/n 1/y = 1/n - 1/(n+k) 1/y = k/n(n+k) y = n(n+k) / k y = n*n/k + n 枚举k小于 使得 k能够被 n*n 给整除,问题便转化为原创 2015-03-02 19:17:38 · 1196 阅读 · 0 评论 -
uva 10791 Minimum Sum LCM(数论)
题意: 给一个数字n,范围在[1,2^23-1],这个n是一系列数字的最小公倍数,这一系列数字的个数至少为2 例如12,是1和12的最小公倍数,是3和4的最小公倍数,是1,2,3,4,6,12的最小公倍数,是12和12的最小公倍数……… 那么找出一个序列,使他们的和最小,上面的例子中,他们的和分别为13,7,28,24……显然最小和为7解析: 参考了这篇文章的思路:http:/原创 2015-03-02 19:24:50 · 554 阅读 · 0 评论 -
HDU 5187 zhx's contest(快速幂+快速乘法)
题意: 数字1~n,按某种顺序排列,且满足下列某一个条件: (1)a1~ai递增,ai~an递减 (2)a1~ai递减,ai~an递增。 问有多少种不同的排列。思路: 首先是全部递减或全部递增各一种,共2种。 另外就是满足上列两个条件的情况了, 要想满足条件(1)那就只能把最大的n放在i位置, 共有C(1,n-1)+C(2,n-1)+……+C(n-2,n原创 2015-03-15 19:37:17 · 684 阅读 · 0 评论 -
UVA 11027 Palindromic Permutation(组合数学)
题意: 给出字符串,以及n,然后字符串中的字母排序可以组成若干的字符串,有些为回文串,输出第n个回文串,若不存在第n个回文串,输出“XXX”。解析: 因为n非常大,所以用枚举是由点不太现实的,对于一个字符串,若能重排成回文串,说明每个字母出现的次数都为偶数,或者说为奇数的只有一个(可以放在中间); 然后这样我们就可以将字符缩减一半,构造左半边的字符串(注意若有单个字符输出时要加上)。 然后根原创 2015-04-06 19:24:23 · 601 阅读 · 0 评论 -
CSU 1563 Lexicography(全排列第K大)
题意 输出字符串全排列第K大的数字。AC代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;const int N = 100;char str[N], ans[N];ll factor[N], cnt[N];void get_fact原创 2015-04-06 19:34:29 · 639 阅读 · 0 评论 -
hdu 5317 RGCDQ(素数筛选法+前缀和)
题意: 定义函数F(x)为x的不同的素因子且小于等于x的个数,询问[l,r]区间中gcd(F(i),F(j))gcd(F(i),F(j))的最大值。解析: 注意到 F 值很小,用素数筛法预处理出所有的 F 值,然后再预处理出 前缀和sum[i][j],表示前 i 个 F 值中有多少个 j。 对于每个询问直接暴力查询区间有多少个 1 2 3 4 5 6 7 即可。mymy code原创 2015-07-31 16:19:09 · 543 阅读 · 0 评论 -
hdu 5391 Zball in Tina Town(威尔逊定理)
题意: 求(n−1)!modn(n−1)!\mod n解析: 如果n为合数,显然答案为0. 如果n为素数,那么由威尔逊定理可得答案为 n - 1 注意有个trick为 n = 4注意: 判断素数可以用快速判素数的方法。mymy codecode#include <cstdio>#include <cstring>#include <algorithm>using原创 2015-08-17 08:57:42 · 668 阅读 · 0 评论 -
hdu 5363 Key Set (快速幂取模)
题意: 给你一个元素为1到n的集合,让你求有多少个非空子集,子集内的元素之和为偶数。解析: 子集中满足元素之和为偶数那么得满足几何中的奇数必须为偶数个。 那么偶数的情况可以任意取。一个几何中有 n/2n/2 个偶数,有 (n+1)/2(n+1)/2个奇数。 那么最终的结果为∑n/2i=1Cin/2∗∑(n+1)/2j=1Cj(n+1)/2=2n−1−1\sum_{i=1}^{n原创 2015-08-06 20:58:39 · 919 阅读 · 0 评论 -
hdu 5428 The Factor(分解质因子)
题意: 给一个序列,设所有项乘积为a,求a的因子中因子个数大于2的最小因子。解析: 将每个数分解质因子,记录每个质因子的个数。 然后从最小的质因子开始取(累乘),直到取够两个(因为1和其本身也是该数的因子),此时得到的结果就是满足条件的最小因子。mymy codecode#include <cstdio>#include <cstring>#include <algorithm原创 2015-09-06 09:26:19 · 732 阅读 · 0 评论 -
hdu 5430 Reflect(欧拉函数)
题意: 从镜面材质的圆上一点发出一道光线反射N次后首次回到起点。 问本质不同的发射的方案数。解析:mymy codecode#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N = (int)1e6 + 5;int phi[N], n;void phi_t原创 2015-09-06 09:43:34 · 500 阅读 · 0 评论 -
hdu 5407 CRB and Candies(乘法逆元+快速幂)
题意: 求 lcm(C0n,C1n,...,Cnn)=?lcm(C^0_n, C^1_n, ..., C^n_n) = ?解析: 打表了发现规律是 lcm(1,2,3,……n,n+1)/(n+1)lcm(1,2,3,……n,n+1)/(n+1) 然而lcm怎么求呢? 可以发现随着n的增长好多最小公倍数都是不变的,增长的位置都发生在有新的质因子产生或者原本质因子的次数增大原创 2015-08-21 19:57:03 · 730 阅读 · 0 评论 -
hdu 5446 Unknown Treasure(Lucas定理+中国剩余定理)
题意:求C(n,m)%(∏pi)C(n, m) \% (∏p_i)。pip_i小于10510^5,mm,nn,以及答案都是101810^{18}。解析:先使用LucasLucas定理求出对于每个pip_i,C(n,m)%piC(n, m) \% p_i的值。 再使用中国剩余定理对模数和余数求解即可。证明:令 total=∏pitotal = ∏p_i,X=Cmn%(∏pi)X = C_n^m \%原创 2015-09-14 21:10:18 · 1364 阅读 · 1 评论 -
UVA 10673 Play with Floor and Ceil(拓展欧几里得)
题意: 给定x, k,求p, q使得: 思路: http://blog.csdn.net/fioman/article/details/2455698 利用扩展的欧几里得定理,ax + by = gcd(a, b);x, y一定有整数解。AC代码#include <cstdio>#include <cstring>#include <algorithm>#include原创 2015-03-02 19:06:21 · 629 阅读 · 0 评论 -
欧拉函数浅析
欧拉函数的作用是,计算1~n 内与n互质的个数那么我们可以把n拆成质因子相乘 为什么要拆成质因子相乘呢? 首先互质等价于没有公约数。 那么我们把1~n内与n有公约数的数踢掉,剩下的就是互质。那么问题来了,怎么判断有公约数了? 显然把n拆成质因子相乘那么假如与n有公约数的数,显然是要包含这些质因子,所以我们把1~n包含这些质因子的数全踢掉。那么该怎么知道了哪些数,包含这些质因子呢? 显原创 2015-02-12 17:06:35 · 1224 阅读 · 0 评论 -
UVa 128 Software CRC(模运算)
题意: 给你一个字符串(可能有空格,最多1024字符),每个字符代表一个数字,因为最多有256个字符,所以这个字符串其实是表示一个256进制的数字。 但这还没完,在这个256进制数字要再加两位,组成一个新的256进制数字,这个数字要能被g=34943(十进制)整除,要你输出新添加的那两个数字是什么,这两个数字要以16进制的形式输出,用空格隔开。解析: 把一字符串变成用二进制表示的一列原创 2015-02-26 16:06:24 · 540 阅读 · 0 评论 -
Uva 10879 Code Refactoring
Problem BCode RefactoringTime Limit: 2 seconds"Harry, my dream is a code waiting to bebroken. Break the code, solve the crime."Agent CooperSeveral algorithms in modern cryptogr原创 2014-07-24 18:50:49 · 847 阅读 · 0 评论 -
uva 408 Uniform Generator
Uniform Generator Computer simulations often require random numbers. One way to generate pseudo-random numbers is via a function of the formwhere `` " is the modulus ope原创 2014-07-25 20:12:02 · 709 阅读 · 0 评论 -
Uva-350 Pseudo-Random Numbers
Pseudo-Random Numbers Computers normally cannot generate really random numbers, but frequentlyare used to generate sequences of pseudo-random numbers. These are generatedby some algorithm,原创 2014-07-26 07:42:28 · 860 阅读 · 0 评论 -
Uva 550 Multiplying by Rotation
Multiplying by Rotation Warning: Not all numbers in this problem are decimal numbers!Multiplication of natural numbers in general is a cumbersome operation. In somecases however the原创 2014-07-26 08:01:22 · 725 阅读 · 0 评论 -
UVA 568 - Just the Facts
Just the Facts The expression N!, read as ``N factorial," denotes the product of the firstN positive integers, whereN is nonnegative. So, for example,NN!011原创 2014-07-26 07:34:42 · 729 阅读 · 0 评论 -
Uva 10392 Factoring Large Numbers
Problem F: Factoring Large NumbersOne of the central ideas behind much cryptography is that factoring large numbers is computationally intensive. In this context one might use a 100 digit number tha原创 2014-07-26 07:47:56 · 911 阅读 · 0 评论 -
UVA 10061 How many zero's and how many digits ?(数论)
How many zeros and how many digits?Input: standard inputOutput: standard outputGiven a decimal integer number you will have to find out how many trailing zeros will be there in its factorial i原创 2014-08-08 22:53:49 · 1750 阅读 · 0 评论 -
UVA 571 Jugs(经典倒水问题)
题意: 在电影《虎胆龙威3》中,布鲁斯和杰克逊要面对这样一个问题,他们有一个3加仑的杯子和一个5加仑的杯子,他们被问这么把5加仑的杯子里面填满4加仑的水。 这个问题可以被描述为这样一个谜题。 你拥有两个杯子A和B,以及无尽的水。 你可以执行以下3种操作 1.填满1个杯子的水 2.倒空1个杯子的水 3.将1个杯子的水倒到另外1个杯子。当倒到第一个杯子为空或者第二原创 2015-02-23 17:39:49 · 1404 阅读 · 0 评论 -
UVA - 10056 What is the Probability ?(概率)
题意: 有n个人玩丢骰子游戏,丢到某个点数为赢然后结束,从第1个人开始丢然后依次下去到n,重新从1开始,直到有人赢为止。 输入n个人,每个人丢到目标点数的概率p,第m个人。求第m个人赢的概率。解析: 如果我要想第m个人赢,可以看得出来那必须前面所有的人没中, 那么前面所有的人没赢的概率是 (1-p)^前面的人的人数 然后我第m个人必须赢,则所有的最终概率是(1-p)^前原创 2015-02-23 17:52:53 · 620 阅读 · 0 评论 -
UVA 10491 Cows and Cars(概率)
题意: 给你NCOWS只牛,NCARS辆车,NSHOW扇开启的门( NSHOW < NCOWS) 问:换门后赢得车的概率是?思路: 我们首先用分类讨论的思想得出三门问题的答案: P(赢得汽车) = P(最开始选的那扇门后是山羊)*P(在最开始选的那扇门后是山羊的情况下剩下那扇门后是车)+P(最开始选的那扇门后是车)*P(在最开始选的那扇门后是车的情况下剩下那扇门后是车)用专业原创 2015-02-23 18:01:41 · 511 阅读 · 0 评论 -
UVA 138(数论)
题意: 有一个计算机程序员,她家所在的某条路上的住宅都在路的同一边,编号由1开始依次递增。她每天晚上都要出门溜狗,或向左走或向右走,直到街尾后返回。有一天溜狗时她计算了沿街的门牌号之和(不包括她家的),第二天她走了相反的方向也计算了门牌号之和,结果令她震惊——两次门牌号之和竟然相同。尽管这个结果是由沿街的房子数量以及她家的门牌号决定的,但她仍然觉得这非常奇妙,并决定将此作为以后选择住房的必要条件原创 2015-02-26 15:39:37 · 654 阅读 · 0 评论 -
UVA 10006 Carmichael Numbers(快速幂取模)
题意: 给定一个数n,如果这个数不是素数,并且满足 (a^n)mod n = a,则这个数叫做:Carmichael Numbers.思路: (ab) mod c = ((a mod c) * (b mod c)) mod c. 利用这个性质,二分法快速幂取模。AC代码#include <cstdio>#include <cstring>#include <algorithm>原创 2015-02-26 15:44:31 · 530 阅读 · 0 评论 -
hdu 3037 Saving Beans(lucas定理模板)
题意: 求在n棵树上摘不超过m颗豆子的方案,结果对p取模。解析: 题目可以转换成 x1+x2+……+xn=mx_1+x_2+……+x_n=m 有多少组解,m在题中可以取0~m。 利用插板法可以得出 x1+x2+……+xn=mx_1+x_2+……+x_n=m 解的个数为Cn−1n+m−1=Cmn+m−1C_{n+m-1}^{n-1}=C_{n+m-1}^m; 则题原创 2015-09-16 15:19:04 · 1370 阅读 · 0 评论