
数论
jchalex
善待人,严做事,无节操
展开
-
poj - 2478 - Farey Sequence
题意:输入一个整数n(2 6),输出2到n之间的欧拉函数值的和。题目链接:http://poj.org/problem?id=2478——>>看题目,挺短的,于是我也写了个短短的程序,先写个求一个数k的欧拉函数值的函数,然后逐个统计,结果TLE了,然后改成了与筛法类似的求2~n之间欧拉函数值的写法,结果WA,再观摩一下别人的,顿悟:最后的统计要用64位整数!#include #i原创 2013-02-07 23:37:27 · 960 阅读 · 0 评论 -
CF - 475 - D. CGCDSSQ(枚举)
题意:一个n个数(1 ≤ n ≤ 10^5)的序列,q个询问(1 ≤ q ≤ 3 × 10^5),每个询问是一个数x,对于每个询问,输出gcd(ai, ai+1, ..., aj) == x的(i, j)对数。题目链接:http://codeforces.com/contest/475/problem/D——>>枚举一次。。为什么不会TLE呢?因为每趟子枚举基于上一趟的产生的最大公约数原创 2014-10-20 22:09:20 · 1045 阅读 · 0 评论 -
hdu - 1576 - A/B(乘法逆元)
题意:求A / B % 9973题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1576——>>求逆元xa原创 2014-11-03 13:07:08 · 748 阅读 · 0 评论 -
hdu - 4869 - Turn the pokers(组合数学 + 乘法逆元)
题意:m 张自牌,开始时全部正面朝下,翻转 n 次,每次翻转 xi 张牌,问最后的结果有多少种(0题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4869——>>假如最后有 a 张牌正面朝上,则它的结果有 C[m][a] 种(组合数),所以,只要求出最后可能有多少张牌正面朝上,再累加其组合数可行。。1)求最后正面牌数的上下界;2)以 2原创 2014-11-03 10:07:33 · 940 阅读 · 0 评论 -
hdu - 3049 - Data Processing(乘法逆元)
题意:N(N题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3049——>>RJ白书上说“由于‘乘法逆’太重要了……”,上一年南京区赛同学也碰到了求逆元……现在,学习了。。 什么是乘法逆?ab % m = 1 (这里的 a, b 分别都是模 m 的同余等价类),a 模 m 的乘法逆是 b,同时,b 模 m 的乘法逆是a。原创 2014-11-02 16:03:52 · 1321 阅读 · 0 评论 -
hdu - 2669 - Romantic(扩展欧几里得)
题意:给出X, Y,求X * a + Y *原创 2014-11-02 16:27:55 · 666 阅读 · 0 评论 -
poj - 1061 - 青蛙的约会(扩展欧几里德)
题意:两只青蛙在同一条纬度线上,它们约定各自朝西跳,直到碰面为止。规定纬度线上东经0度处为原点,由东往西为正方向,单位长度1米。设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。纬度线总长L米。现在要你求出它们跳了几次以后才会碰面。(x≠y )题目链接:http://poj.org/problem?id=1061—原创 2013-02-11 22:28:37 · 951 阅读 · 0 评论 -
hdu - 1018 - Big Number
题意:求n!是多少位数(1 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1018——>>对于一个数,如1314,log10(1314) = 3.xxx,它是一个4位数。对于n!,log10(n!) = log10(n) + log10(n-1) + ... + log10(1);注意用浮点数。#include #include原创 2013-08-07 19:31:58 · 890 阅读 · 0 评论 -
hdu - 1060 - Leftmost Digit
题意:求N^N的最高位数字。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1060——>>从昨晚想到今晚,二十多个小时,最后还是决定找博客了,理解理解后,明了……对于一个数:10^(1000.68515)它的是高位是多少呢?先拆:10^1000 * 10^0.68515先看右边,10^0.68515想想我们学的指数函数:y原创 2013-03-21 01:14:41 · 1379 阅读 · 0 评论 -
Uva - 10006 - Carmichael Numbers
题意:判断一个数n(2 成立条件:1、是合数;2、对于任意一个2题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=12&problem=947——>>刚学了个矩阵快速幂,想起还有个快速幂取模,找到这题,核心思想与矩阵快速幂是一样的,原创 2013-03-16 23:51:35 · 1044 阅读 · 0 评论 -
hdu - 2054 - A == B ?
题意:输入两个数字A, B,如果A等于B,输出“YES”,否则输出“NO”。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2054——>>开始以为,好简单呀,直接输入两个string,然后用==判断,一次WA,改用直接输入两个double,然后用==判断,再次WA……原来,这不是那么好过的题!要考虑前导0与有小数点的尾0。不过貌似不用考虑负数原创 2013-02-14 01:14:57 · 2494 阅读 · 0 评论 -
poj - 2992 - Divisors
题意:求组合数C(n, k)的约数的个数 (0 ≤ k ≤ n ≤ 431)。题目链接:http://poj.org/problem?id=2992——>>3个公式: 1、n!中含素数p的个数为n/p + n/p^2 + n/p^3 + ...(到0停)程序中通过cal函数实现 2、C(n, k) = n! / (n-k)! / k! 3、n = p1^a1*p2^a2*原创 2013-02-08 04:20:37 · 847 阅读 · 0 评论 -
poj - 1284 - Primitive Roots
题意:题意映射为求p-1的欧拉函数。题目链接:http://poj.org/problem?id=1284——>>直接求单个数的欧拉函数。#include #include using namespace std;int main(){ int p, i; while(~scanf("%d", &p)) { p--;原创 2013-02-08 08:08:38 · 726 阅读 · 0 评论 -
poj - 2142 - The Balance
题意:用x个a毫克的砝码与y个b毫克的砝码恰好称得质量为d毫克的阿斯匹林,求使x+y最小的x和y。题目链接:http://poj.org/problem?id=2142——>>好题。因为欧几里德扩展算法只能求ax + by = gcd(a, b);所以,先求a, b的最大公约数gcd_ab,对于ax + by = d,令a, b, d同除以gcd_ab,然后可求得(a/gcd_ab)x +原创 2013-02-08 16:57:43 · 1003 阅读 · 0 评论 -
hdu - 2028 - Lowest Common Multiple Plus
题意:求n个数的最小公倍数。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2028——>>两两归并就好。#include using namespace std;const int maxn = 1000000 + 10;long long a[maxn];long long gcd(long long x, long lon原创 2013-02-08 06:44:37 · 615 阅读 · 0 评论 -
zoj - 2723 - Semi-Prime
题意:判断输入的整数 N (2 是否可以表示成两个素数的积,能的话输出“Yes”,否则输出“No”。题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1723——>>先打素数表,然后枚举所有在1000000内的所有情况就行。#include #include using namespace std;原创 2013-02-08 05:20:58 · 826 阅读 · 0 评论 -
poj - 2407 - Relatives
题意:求n的欧拉函数。题目链接:http://poj.org/problem?id=2407——>>欧拉函数的模版题吧。#include #include using namespace std;int main(){ int n; while(~scanf("%d", &n)) { if(!n) return 0;原创 2013-02-08 14:04:12 · 582 阅读 · 0 评论 -
poj - 2739 - Sum of Consecutive Prime Numbers
题意:输入一个整数n( 在2和10 000之间),求n可以表示成多少种连续素数和。题目链接:http://poj.org/problem?id=2739——>>先打素数表,然后统计所有可能值就好。#include #include using namespace std;const int maxn = 10000 + 10;int p[maxn], m, cnt[maxn原创 2013-02-08 05:01:28 · 643 阅读 · 0 评论 -
poj - 1338 - Ugly Numbers(优先队列)
题意:问第n(n 题目链接:http://poj.org/problem?id=1338——>>1, 2, 3, 4, 5, 6, 8, ...假设小根堆存以上丑数,那么每次取出最小的数,这个最小的数nMin,它可以生成三个数:nMin * 2, nMin * 3, nMin * 5,将这三个数放入小根堆继续,一直复筛出1500个丑数为止。小根堆可用优先队列来替代。#inclu原创 2014-10-21 09:57:41 · 995 阅读 · 0 评论