poj数论(转)

1.burnside定理,polya计数法
    这个大家可以看brudildi的《组合数学》,那本书的这一章写的很详细也很容易理解。最好能完全看懂了,理解了再去做题,不要只记个公式。
    *简单题:(直接用套公式就可以了)
    pku2409 Let it Bead   
    pku2154 Color
    pku1286 Necklace of Beads
    *强烈推荐:(这题很不错哦,很巧妙)
    pku2888 Magic Bracelet
2.置换,置换的运算

置换的概念还是比较好理解的,《组合数学》里面有讲。对于置换的幂运算大家可以参考一下潘震皓的那篇《置换群快速幂运算研究与探讨》,写的很好。
    *简单题:(应该理解概念就可以了)
    pku3270 Cow Sorting
    pku1026 Cipher
    *置换幂运算:
    pku1721 CARDS
    pku3128 Leonardo‘s Notebook
    *推荐:(不错的应用)
    pku3590 The shuffle Problem
3.素数,整数分解,欧拉函数

素数是可能数论里最永恒,最经典的问题了(我们的队名就叫PrimeMusic^-^)。素数的判断,筛法求素数,大素数的判断···还有很多其他问题都会用到素数。
    *最水最水的:(心情不爽时用来解闷吧)
    pku1365 Prime Land
    pku2034 Anti-prime Sequences
    pku2739 Sum of Consecutive Prime Numbers
    pku3518 Prime Gap
    pku3126 Prime Path
    pku1595 Prime Cuts
    pku3641 Pseudoprime numbers
    pku2191 Mersenne Composite Numbers
    pku1730 Perfect Pth Powers
    pku2262 Goldbach‘s Conjecture
    pku2909 Goldbach‘s Conjecture
    *筛法:
    pku2689 Prime Distance(很好的一个应用)
    *反素数:
    zoj2562 More Divisors
    *素数判断,整数分解:
    这两题都要用到miller_rabin的素数判断和pollard_rho的整数分解,算法书上都会有,应该是属于模板题吧,不过最好看懂自己敲一遍。
    pku1811 Prime Test
    pku2429 GCD & LCM Inverse

*欧拉函数:
    数论里很多地方都能用到欧拉函数,很重要的。
    pku1284 Primitive Roots (关于原根的定理:p的原根为euler(euler(p)),本题中当p为奇素数时euler(p)=p-1,故答案为euler(p-1))
    pku2407 Relatives (很水)
    pku2773 Happy 2006
    pku2478 Farey Sequence (快速求欧拉函数)
   pku3090 Visible Lattice Points (法雷级数)
    *推荐:(欧拉函数,费马小定理)
    pku3358 Period of an Infinite Binary Expansion
    *整数分解
    这个也很重要的耶,包括大数的表示方法。
    pku2992 Divisors
    pku3101 Astronomy (分数的最小公倍数)
4.扩展欧几里得,线性同余,中国剩余定理

这应该是数论里比较重要的一个部分吧,这类的题目也挺多,具体的内容最好先看看数论书,我也整理过一些,可以参考参考:
    *简单题:
    pku1006 Biorhythms
    pku1061 青蛙的约会
    pku2891 Strange Way to Express Integers
    pku2115 C Looooops
    pku2142 The Balance
    *强烈推荐:
    sgu106 The equation
    pku3708 Recurrent Function (经典)
 5.约瑟夫环问题

这个问题还是比较有意思的,不是很难。
    *简单题:
    pku3517 And Then There Was One
    pku1781 In Danger
    pku1012 Joseph
    pku2244 Eeny Meeny Moo
    *推荐:
   pku2886 Who Gets the Most Candies?
6.高斯消元法解方程

其实解方程并不是很难,就是按线性代数中学的那种方法,把系数矩阵化成上三角矩阵或数量矩阵,不过有些题目要判断是否有解,或枚举所有解。不过这类题目我认为比较难的还是怎么去建立这个方程组,这个理解了,就没什么大问题了。
    *简单题:
    pku1222 EXTENDED LIGHTS OUT
    pku1681 Painter‘s Problem
    pku1830 开关问题
    *推荐:
    pku2947 Widget Factory
    pku2065 SETI
    *强烈推荐:
    pku1753 Flip Game
    pku3185 The Water Bowls
    *变态题:
    pku1487 Single-Player Games
  
7.矩阵
    用矩阵来解决问题确实很常见,但我现在用到还不是很好,很多难题我还不会做。建议大家可以去看Matrix67的那篇关于矩阵的十个问题,确实很经典,但不太好看懂。
    *简单:
    pku3070 Fibonacci
    pku3233 Matrix Power Series
    pku3735 Training little cats
8.高次同余方程

有关这个问题我应该是没什么发言权了,A^B%C=D,我现在只会求D和B,唉,很想知道A该怎么求。就先推荐几道题目吧,这里涉及到了一个baby-step,giant-step算法。
    pku3243 Clever Y
    pku2417 Discrete Logging
9.容斥原理,鸽巢原理

很有用的两个定理,但好像单独考这两个定理的不是很多。
    *鸽巢原理:
    pku2356 Find a multiple
    pku3370 Halloween treats
    *容斥原理:
    hdu1695 GCD
    hdu2461 Rectangles
10.找规律,推公式

这类题目的设计一般都非常巧妙,真的是很难想出来,但只要找到规律或推出公式,就不是很难了。我很多都是在参考别人思路的情况下做的,能自己想出来真的很不容易。
    *个人感觉都挺不错的:
    pku3372 Candy Distribution
    pku3244 Difference between Triplets
    pku1809 Regetni
    pku1831 不定方程组
    pku1737 Connected Graph
    pku2480 Longge‘s problem
    pku1792 Hexagonal Routes
11.排列组合,区间计数,计数序列

这些题目可能需要一些组合数学知识,基本上高中的知识就够了。区间计数问题一般不难,但写的时候需要仔细一些,各种情况要考虑到位。至于像卡特兰数,差分序列,斯特灵数···都还挺有意思,可以去看看《组合数学》。
    *简单题:
    pku1850 Code
    pku1150 The Last Non-zero Digit
    pku1715 Hexadecimal Numbers
    pku2282 The Counting Problem
    pku3286 How many 0‘s?
    *推荐:
    pku3252 Round Numbers
    *计数序列:
    pku1430 Binary Stirling Numbers
    pku2515 Birthday Cake
    pku1707 Sum of powers
12.二分法

二分的思想还是很重要的,这里就简单推荐几个纯粹的二分题。
    *简单:
    pku3273 Monthly Expense
    pku3258 River Hopscotch
    pku1905 Expanding Rods
    pku3122 Pie
    *推荐:
    pku1845 Sumdiv
13.稳定婚姻问题

无意中接触到这个算法,还蛮有意思的,《组合数学》中有详细的介绍。
    pku3487 The Stable Marriage Problem
    zoj1576 Marriage is Stable
14.数位类统计问题

在航点月赛中第一次接触到这类问题,scau大牛little龙推荐我看了一篇论文,09年刘聪的《浅谈数位类统计问题》,这篇论文相当精彩,也相当详 细,每道题都有详细的分析和作者的参考代码。所以我也没什么可说的了,这些题的代码我博客里也就不贴了,大家直接去看论文吧。
    简单:
    ural1057 Amount of degrees
    spoj1182 Sorted bit squence
    hdu3271 SNIBB
    较难:
    spoj2319 Sequence
    sgu390 Tickets

时间: 2024-10-10 17:16:18

poj数论(转)的相关文章

poj 1808 Quadratic Residues 【平方剩余】【数论】

题目链接:http://poj.org/problem?id=1808 题目大意:给你T组数据,每组数据一个a一个n,判断 x^2  ≡  a ( mod  n ) 能否成立.成立则输出1否则输出-1. 一个简单的平方剩余,只用判断能否有解即可. #include<stdio.h> #define LL long long LL pow_mod(LL a, LL n, LL mod) { LL res = 1; while(n) { if (n & 1) res = res * a %

POJ 1775 sum of Factorial (数论)

链接:http://poj.org/problem?id=1775 Description John von Neumann, b. Dec. 28, 1903, d. Feb. 8, 1957, was a Hungarian-American mathematician who made important contributions to the foundations of mathematics, logic, quantum physics,meteorology, science,

POJ 3358 Period of an Infinite Binary Expansion( 数论好题 + 欧拉定理 + 欧拉函数 )

POJ 3358 Period of an Infinite Binary Expansion( 数论好题 + 欧拉定理 + 欧拉函数 ) #include <cstdio> #include <cstring> #include <algorithm> #include <algorithm> using namespace std; typedef long long LL; LL fac[ 100000 ], pf; LL gcd( LL a, LL

POJ 1150 The Last Non-zero Digit 数论+容斥

POJ 1150 The Last Non-zero Digit 数论+容斥 题目地址: POJ 1150 题意: 求排列P(n, m)后面第一个非0的数. 分析: 为了熟悉题目中的理论,我先做了俩初级的题目: POJ 1401,题解见:POJ 1401 && ZOJ 2202 Factorial 阶乘N!的末尾零的个数 NYOJ 954,题解见:NYOJ 954 求N!二进制末尾几个0 这题想了一下,十进制末尾几个0可以转化为几个5因子,二进制最后一位非0可以转化为2因子,但是10进制就

POJ 1845 - Sumdiv ( 数论 + 唯一分解定理 + 快速幂取模 )

POJ 1845 - Sumdiv ( 数论 + 唯一分解定理 + 快速幂取模 ) 这是一道数论的好题,需要较好的数学基础 题意: 给定A,B,求A^B的所有因数的和,再MOD 9901 分析: 这里用到了数论当中相当一部分知识 a. 唯一分解定理 任何一个整数都可以分解为若干个素数的幂的乘积的形式 A = ( p1 ^ q1 + p2 ^ q2 + ..... + pn ^ qn ) p为素数 A^B = ( p1 ^ (q1*B) + p2 ^ (q2*B) + ..... + pn ^ (

poj 2689 Prime Distance 【数论】【筛法求素数】

题目链接:传送门 题目大意: 给你L和R两组数,L和R的范围是2^32,其间隔(即R-L最大为1,000,000.) .让你求出L和R之间素数的最大间隔和最小的间隔. 比如 2 17.之间的最小素数间隔是2 3,最大的素数间隔是11 17. 要是直接进行一个2^32次方筛法然后在判断是会T的. 我们这样来想,筛法求素数的原理是什么: /**vis数组标记为0则说明是素数*/ int vis[10005]; void getPrimevis(int n) { int m=sqrt(n+0.5);

poj 1284 Primitive Roots 【原根】【数论】

题目链接 :传送门 题目大意: 求一个质数的原根个数. 先普及一下原根的定义: 设m是正整数,a是整数,若a模m的阶等于euler(m),则称a为模m的一个原根. eg: m=7,euler(7) =  6(1,2,3,4,5,6) 则: 1   1^(n)mod7=1! = 6 2   2^(n)mod7={2 4 1}!=6 3   3^(n)mod7={3,2,6,4,5,1}==6   故3是模7的原根 4   4^(n)mod7={4,2,1}!=6 5   5^(n)mod7={5,

POJ 2154 Color(组合数学-波利亚计数,数论-欧拉函数,数论-整数快速幂)

Color Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7693   Accepted: 2522 Description Beads of N colors are connected together into a circular necklace of N beads (N<=1000000000). Your job is to calculate how many different kinds of th

POJ 1995 Raising Modulo Numbers (数论-整数快速幂)

Raising Modulo Numbers Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 4379   Accepted: 2516 Description People are different. Some secretly read magazines full of interesting girls' pictures, others create an A-bomb in their cellar, oth