ACM_数论
文章平均质量分 57
奇怪的猪猪
whu,cuhk
展开
-
codeforces#232_div2_C On Number of Decompositions into Multipliers 数论 组合计数
题目地址:cf#232#div2#c题目大意:给定正整数n,然后给你n个数,我们只需要这n个数的乘积,然后问可以分解成多少种n个数的乘积形式。实际上就是先进行素因数分解,然后分配这些指数到n各地方去,即是n元不定方程的非负整数解问题。然后就是组合数打表。 用map进行指数统计。其中素数表只用打到10 ^5 到10^6 不超时但是很浪费代码:#include#原创 2014-03-01 16:44:51 · 523 阅读 · 0 评论 -
codeforces#232_div2_B On Corruption and Numbers 多元不定方程非负整数解
题目地址:cf#232#div2#B题目大意:告诉你l,r,你现在有l,l+1,l+2.....r 这么多种面值的钱,每种面值的钱有很无数张,问你是否可以表示出给定的n这么大的面值。初一看是一个不定方程的非负整数解是都有解问题 。 经过@eyelids的提示,只需要找到一个整数x,使得n落入【lx,rx】 这个区间就可以了。这里详细说一下,一旦找到了x,那么我们先取出x枚原创 2014-02-28 16:05:22 · 752 阅读 · 0 评论 -
13成都邀请赛 1007 Good Numbers
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4722考虑怎样的数可以成为good number ,如果不给范围,取一个n位数 (最高位-1)*10*10....最后一位由前面的和决定。 首先不考虑0基于这样的思想 比如不超过54321的good number 有多少 ,1~3位有9+9*10+9*10*10(等比求和)原创 2013-09-12 01:12:10 · 770 阅读 · 0 评论 -
hdu 3221 Brute-force Algorithm (09上海区域赛)欧拉定理
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3221 思路 首先列出n比较小的一些,找到规律,指数就是fibonacci数列,也不难由函数递归的形式猜出。 然后如果n但是如果n很大,(f[45] 就要超过int了) 这样就得用欧拉定理了 ,是用a和m不互素的那种,但是不可能存得下那么多数,所以我们基于线性递推数列,模上一个数后必然出现原创 2013-10-06 02:00:19 · 1160 阅读 · 0 评论 -
2013 Multi-University Training Contest 3 (g) The Unsolvable Problem
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4627[a,b]=ab/(a,b) a,b和一定时,越接近乘积越大,在接近的同时,尽量保持公因子最少。 如果n为2*k+1 那么 取a=2k,b=2k+1 最佳。 如果n为偶数=2k,就要进一步分k的奇偶性了。 n=4k 时 显然2k+2k会很小 2k-1,2k+1 就满足了 (2原创 2013-09-19 15:00:25 · 1021 阅读 · 0 评论 -
LA 4609 ,poj 3842 An Industrial Spy
题目地址:http://poj.org/problem?id=3842 或者: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2610思路就是暴力求出每一种可能的情况,进行全排列(next_permutation可以去重原创 2013-09-04 01:36:28 · 885 阅读 · 0 评论 -
poj 3844 Divisible Subsequences 剩余类,组合计数
题目地址: http://poj.org/problem?id=3844思路: a[i]+a[i+1]+...+a[j]=s[j]-s[i]; 于是整除等价于 s[i]===s[j] (mod d); 然后统计出现了多少次 c[n][2]就可以了 。 值得注意的是,有可能50000* (50000-1)/2 要用long long每次进入一个新case 后把p 清零,su原创 2013-09-04 11:10:55 · 756 阅读 · 0 评论 -
poj 2689 Prime Distance 二次筛法,找出给定区间所有约数
题目地址: http://poj.org/problem?id=2689题目思路: 找出int 内所有素数空间上时不允许的,但是题目要求l ,u的差不超过100w ,在空间上还是允许的。然后先找出5w以内的素数,这样的可以中这些素数作为合数最小的素因子将这个合数筛掉。 几个要注意的地方 【1】 因为l可能很大,j的起点不能去“p*p” 然后比L小就加一个p,想一下如果p=原创 2013-08-27 01:03:19 · 679 阅读 · 0 评论 -
zoj 5194 Singles' Day
题目地址:zoj5194题目大意: 给你b, n, 问以b为进制,n位1111.....排成的数是不是素数。一开始不知道怎么判断“感觉这么大的数”,额,直接先打出来试一下看看long long 够不够存嘛。发现只有16 16这一组超过范围了。那么这一组或者是素数或者不是 交两发试一下 或者用BigInteger算一下就好了。代码:#include#includeusi原创 2014-03-02 16:29:03 · 858 阅读 · 1 评论 -
十六进制数转八进制 大数转化
题目:问题描述 给定n个十六进制正整数,输出它们对应的八进制数。输入格式 输入的第一行为一个正整数n (1 接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输出格式 输出n行,每行为输入对应的八进制正整数。注意 输入的十六进制数不会有前导0,原创 2014-03-05 01:53:14 · 2662 阅读 · 0 评论 -
codeforces#191_div2_C Magic Five 矩阵快速幂
题目地址:点这里原创 2014-04-07 18:50:27 · 749 阅读 · 0 评论 -
codeforces#240_div2_C Mashmokh and Numbers
题目地址:点这里原创 2014-04-07 15:19:17 · 690 阅读 · 0 评论 -
codeforces#84_div2_C Lucky Sum of Digits
代码:#include#include#include#include#includeusing namespace std;typedef pair pii;int cmp(pii a,pii b){ if(a.first+a.second<b.first+b.second) return 1; else if(a.first+a.second==b.fi原创 2014-04-06 22:14:54 · 665 阅读 · 0 评论 -
买不到的账目数 数论
题目地址:你懂的题干:问题描述小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。本题的要求就是在已知两原创 2014-03-21 17:53:55 · 2085 阅读 · 11 评论 -
woj 1540 Fibonacci 矩阵快速幂
题目地址:戳这里求Fibonacci数列前n项的立方和。 比赛的时候.. 构造一个10*10的矩阵 跪了,很多无用信息:代码:#includeusing namespace std;const int mod=1000000007;struct Matrix{ long long p[10][10]; };Matrix multi(Ma原创 2014-03-30 23:55:47 · 823 阅读 · 2 评论 -
hrbust 1632 最大的最小公倍数
题目地址:戳这里额,构造尽可能互素的连续整数:代码:#includetypedef long long inta;using namespace std;inta max(inta x,inta y){ return x>y?x:y;}int main(){ inta n; while(cin>>n) { if(n==原创 2014-03-18 02:02:18 · 573 阅读 · 0 评论 -
srm#397_div1_500pt 矩阵乘法+快速模幂
题目地址:srm#397_div1_500题目描述:Problem Statement NOTE: This problem statement contains superscripts that may not display properly if viewed outside of the applet.You are gi原创 2014-03-16 20:17:48 · 645 阅读 · 0 评论 -
codeforces#232_div2_D On Sum of Fractions
题目地址: cf#232_div2_D题目大意:代码:#include#includeusing namespace std;int is_prime(long long n){ for(int i=2;i<=sqrt(n);i++) { if(n%i==0) return 0; } return 1原创 2014-03-02 02:02:33 · 562 阅读 · 0 评论 -
nefu 120 Lucas-Lehmer 梅森素数判别法 二分-大数乘法换加法
题目地址:http://acm.nefu.edu.cn/test/problemshow.php?problem_id=120#include#include#includeusing namespace std;typedef long long inta;inta multi(inta a,inta b, inta m){ inta rel=0; while(b原创 2013-07-09 15:19:16 · 1429 阅读 · 0 评论 -
sgu 499 Greatest Greatest Common Divisor 约数“打表”
题目地址: http://acm.sgu.ru/problem.php?contest=0&problem=499分析思路: 直接计算两两的最大公约数会超时的,我们换个角度看问题,我们找到输入进来的数的所有约数,如果某个数出现了两次或者以上,那么满足条件的最大的就是ggcd了然后就是类似于筛法找约数, 这样可以找到 1~n中,每个数不超过自己平方根的所有约数。 然后比平方根大的那个可以用原创 2013-08-25 03:14:00 · 1003 阅读 · 0 评论 -
poj 1006 Biorhythms 中国剩余定理
题目地址: http://poj.org/problem?id=1006中国剩余定理的应用#includeusing namespace std;typedef long long inta;void extend_gcd(inta a,inta b,inta &x,inta &y){ if(b==0) { x=1; y=0; } e原创 2013-07-10 04:18:58 · 1281 阅读 · 0 评论 -
hdu 3579 Hello Kiki
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3579要点; 题目要求正整数,一旦r1=0;应该输出最小公倍数#include#includeusing namespace std;typedef long long inta;void extend_gcd(inta a,inta b,inta &x,inta &y,inta &g原创 2013-07-10 02:33:45 · 833 阅读 · 0 评论 -
hdu 1021 Fibonacci Again 递推数列模周期
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1021说明 :题目很水 但是有一个重要结论,只要是递推数列,一定是模周期数列 (可以用抽屉原理证明)#includeusing namespace std;int main(){ int n; while(cin>>n) { if(n%8==2||n%8==6原创 2013-07-09 17:13:33 · 1013 阅读 · 0 评论 -
poj 2891 Strange Way to Express Integers 模数不互素的中国剩余定理
题目地址:http://poj.org/problem?id=2891#include#includeusing namespace std;typedef long long inta;void extend_gcd(inta a,inta b,inta &x,inta &y,inta &gcd){ if(b==0) { x=1; y=原创 2013-07-09 23:29:03 · 1407 阅读 · 0 评论 -
nefu 117 素数分布 http://acm.nefu.edu.cn/test/problemshow.php?problem_id=117
#include#includeusing namespace std;int main(){ int n; while(cin>>n) { int result; result=n-log10(n*log(10)); cout<<result+1<<endl; }}利用素数定理 pi(x) 近似于 x/ln(x);原创 2013-07-08 19:14:50 · 1082 阅读 · 0 评论 -
poj 1061 青蛙的约会 二元一次不定方程 http://poj.org/problem?id=1061
#原创 2013-07-08 18:03:16 · 1011 阅读 · 0 评论 -
nefu 84 http://acm.nefu.edu.cn/test/problemshow.php?problem_id=84
#includeusing namespace std;typedef long long inta;int extend_gcd(inta a,inta b,inta &x,inta &y,inta &gcd){ if(b==0) { x=1; y=0; gcd=a; } else { extend_gc原创 2013-07-08 18:12:22 · 2116 阅读 · 1 评论 -
nefu 118 质数在阶乘中的幂 http://acm.nefu.edu.cn/test/problemshow.php?problem_id=118
#include#includeusing namespace std;int main(){ int k; cin>>k; int n; while(cin>>n) { int exponent=0; for(int i=1;pow(5.0,i)<=n;i++) exponent+=n/pow(5.0,i); cout<<原创 2013-07-09 03:58:13 · 7878 阅读 · 0 评论 -
hdu 1573 X问题 非互素的中国剩余定理应用
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1573注意要点 1 最后的次数直接用除法 取高斯加1即可 若用加法累加会超时2 很容易漏掉的一点是题目要求正整数个数, 不是非负整数 ,如果最后r1==0 而且结果不是0 ,就要在结果上减一#include#includeusing namespace std;typ原创 2013-07-10 01:23:26 · 1398 阅读 · 0 评论 -
hdu 1788 Chinese remainder theorem again 多个数的最小公倍数
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1788说明: 题目很水 提到一个定理,求多个数的最小公倍数转化为求两个数的最小公倍数方法。 然后就是 a=b(mod m1) a=b(mod m2) 等价于a=b(mod [m1,m2] )#includeusing namespace std;typedef long long in原创 2013-07-10 04:46:01 · 1063 阅读 · 0 评论 -
nefu 2 打素数表
#include#include#define M 16777220using namespace std;bool composite[16777220];int main(){ int len=sqrt(M); for(int i=2;i<=len;i++) if(composite[i]==0) for(int j=i*i;j<M;j+=i)原创 2013-07-08 20:21:27 · 560 阅读 · 0 评论 -
poj 1995 Raising Modulo Numbers 快速模幂
#includeusing namespace std;int quick_mod(int a,int b,int m){ a=a%m; int ans=1; while(b) { if(b&1) { ans=(ans*a)%m; } b>>=1; a=(a*a)%m; } return原创 2013-07-21 19:40:40 · 955 阅读 · 0 评论 -
poj 3233 Matrix Power Series 矩阵 快速幂 两次二分
题目地址: http://poj.org/problem?id=3233思想: 1模仿快速模幂法 ; 给矩阵写一个快幂 2 但是k太大 直接求和还是会tle 这个很像等比数列求和 但是可以递归用二分求,理论基础如下 : 求和二分:A+A^2+A...+A^(2k+1)= A+A^2+...+A^k+A^(k+1)+A^(k+原创 2013-07-22 22:20:22 · 680 阅读 · 0 评论 -
hdu 2099 整数的尾数 http://acm.hdu.edu.cn/showproblem.php?pid=2099
#includeusing namespace std;int main(){ int a,b; while(cin>>a>>b) { int tag=0; if(a==0&&b==0) break; for(int i=0;i<=9;i++) for(int j=0;j<=9;j++) { int原创 2013-07-03 14:41:43 · 877 阅读 · 0 评论 -
nefu 115
#includeusing namespace std;int main(){ int n; while(cin>>n) { if(n%12==0) cout<<"YES"<<endl; else { if(n%4==0) cout<<"3"<<endl; else if(n%6==0) co原创 2013-07-03 01:26:05 · 583 阅读 · 0 评论 -
nefu 116
#includeusing namespace std;int gcd(int a,int b){ if(a<b) { int temp=a; a=b; b=temp; } if(b==0) return a; else return gcd(b,a%b);}int main(){ int n,m ; long lon原创 2013-07-03 01:38:56 · 680 阅读 · 0 评论 -
poj C Looooops 类似青蛙的约会,拓展欧几里得算法
题目地址:http://poj.org/problem?id=2115#include#includeusing namespace std;typedef long long inta;void extend_gcd(inta a,inta b,inta &x,inta &y,inta &gcd){ if(b==0) { x=1;原创 2013-07-10 00:13:25 · 552 阅读 · 0 评论 -
codeforces#240_div2_B Mashmokh and Tokens
题目地址:点这里题目思路 :原创 2014-04-07 15:10:00 · 700 阅读 · 0 评论