数论
Benzema67
北京邮电大学学生
展开
-
斐波那契数列集锦
斐波那契序列 集锦 (转)[定理1] 标准Fibonacci序列(即第0项为0,第1项为1的序列)当N大于1时,一定有f(N)和f(N-1)互质其实,结合“互质”的定义,和一个很经典的算法就可以轻松证明 对,就是辗转相除法 互质的定义就是最大公约数为1数学归纳法是很有用的证明方法,我们接下来这个定理用数学归纳法就很好证明: [定理2]若i为奇数, f(i)*f(i)转载 2012-01-06 19:35:33 · 1281 阅读 · 0 评论 -
分数与小数的相互转换
小数转化为分数 题目:http://acm.hdu.edu.cn/showproblem.php?pid=1717 题意:把小数转化为分数,循环部分用()表示。[cpp] view plaincopyvoid Work(char str[]) { int len = strlen(str);原创 2013-11-25 22:27:45 · 4842 阅读 · 1 评论 -
关于约数,素因数的妙用
http://codeforces.com/problemset/problem/359/Dhttp://codeforces.com/problemset/problem/265/Dhttp://acm.hdu.edu.cn/showproblem.php?pid=463038界ACM杭州H题;以上这些题目都是维护因数(CF359sqrt(n)枚举约数会T)原创 2013-11-03 17:23:25 · 1092 阅读 · 0 评论 -
数论中的基本算法 POJ 1845 SPOJ DIVSUM
扩展欧几里得 求逆元(只要a与b互素,那么就有逆元)#include#include#include#include#define mod 9973typedef long long ll;void ExGcd(int a,int b,int &x,int &y){ if(b==0){ x=1; y=0; return原创 2012-08-20 15:24:32 · 767 阅读 · 0 评论 -
三分法
三分法要注意本题函数是下凹函数还是上凸函数hdu4355#include#include#include#includeusing namespace std;#define N 50010double p[N],w[N];int n;double cal(double mid){ int i; double ans=0; for(i=1;i<=n;i++){原创 2012-08-22 01:07:49 · 855 阅读 · 0 评论 -
POJ 1305 勾股数组
数论上的一个定理#include#includeusing namespace std;bool vis[1000010];int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}int main(){ int n,i,j,k; while(scanf("%d",&n)==1){ memset(vis,0,sizeof(vis));原创 2012-08-21 22:09:06 · 808 阅读 · 0 评论 -
Codeforces 216E - Martian Luck
此题用到了非常好的数字的性质/*一个正数的digit root(k进制下,直到得到小于k的数) 等于 正数模k-1(其中k为进制),但是对于digit root为k-1的情况模k-1后即为0*/#include#include#includetypedef long long ll;using namespace std;int main(){ int k,b,n;原创 2012-08-19 15:54:40 · 966 阅读 · 0 评论 -
HDU 2604
快速幂取模,快速矩阵幂取模先利用DFA构造转移矩阵详见AC博客http://hi.baidu.com/aekdycoin/item/f3a474a7ee3b0d218919d3ae#include#includeusing namespace std;typedef long long ll;int len,mod;ll tem[6][6];int main(){原创 2012-08-18 14:37:07 · 831 阅读 · 0 评论 -
zoj 2562
求反素数搜索剪枝即可#includetypedef long long ll;int yes[200];int prime[100];ll maxsum,minnum,n;void dfs(ll num,ll sum,int pos,int limit){ int i; ll temp; if(sum>maxsum){ m原创 2012-07-21 22:08:50 · 1432 阅读 · 0 评论 -
十个利用矩阵乘法解决的经典题目
好像目前还没有这方面题目的总结。这几天连续看到四个问这类题目的人,今天在这里简单写一下。这里我们不介绍其它有关矩阵的知识,只介绍矩阵乘法和相关性质。 不要以为数学中的矩阵也是黑色屏幕上不断变化的绿色字符。在数学中,一个矩阵说穿了就是一个二维数组。一个n行m列的矩阵可以乘以一个m行p列的矩阵,得到的结果是一个n行p列的矩阵,其中的第i行第j列位置上的数等于前一个矩阵第i行上的m个数与后一个转载 2012-04-26 19:58:32 · 1015 阅读 · 0 评论 -
一个数学期望问题
1 . 有一个经典的概率问题:平均需要抛掷多少次硬币,才会首次出现连续的 n 个正面?它的答案是 2^(n+1) - 2 。证明还不会。http://www.matrix67.com/blog/archives/3638 http://www.cnblogs.com/atyuwen/archive/2010/09/12/coin.html2 . 随便取一个 0 到 1 之间的数原创 2012-03-30 12:25:43 · 987 阅读 · 0 评论 -
poj 1845
大致题意:求A^B的所有约数(即因子)之和,并对其取模 9901再输出。解题思路:要求有较强数学思维的题应用定理主要有三个:要求有较强数学思维的题应用定理主要有三个:(1) 整数的唯一分解定理:任意正整数都有且只有一种方式写出其素因子的乘积表达式。A=(p1^k1)*(p2^k2)*(p3^k3)*....*(pn^kn) 其中pi均为素数(2)转载 2012-03-25 11:51:29 · 702 阅读 · 0 评论 -
Codeforces Problem 161E - Polycarpus the Safecracker
先暴力打素数表,然后枚举5位数里(从高位到低位)有i位确定且为x的数有多少个。 具体解某个数时暴力即可#include#include#include#includeusing namespace std;bool vis[100010];vectordp[5][100010];int k,l;int a[6][6];int dfs(int now){ int i,j,原创 2012-03-23 23:23:53 · 1005 阅读 · 0 评论 -
计算阶乘的位数 poj 1423
斯特林公式的应用num=floor(log10(N)+1);斯特林公式如下: 带入公式即可。(其中floor可以用(int)代替,但不能用printf输出%.0f的浮点数,因为后者会自动四舍五入)#include#include#define PI 3.141592653589793239#define ee 2.7182818284590452354int an原创 2012-03-07 14:37:23 · 1095 阅读 · 0 评论 -
蔡勒(Zeller)公式(计算星期)
蔡勒(Zeller)公式:是一个计算星期的公式。随便给一个日期,就能用这个公式推算出是星期几。蔡勒公式如下:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1公式中的符号含义如下:w:星期; w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六c:世纪(前两位数)y:年(后两位数)m:月(m大于等于3,转载 2012-02-13 20:59:55 · 1370 阅读 · 0 评论 -
计算n!末尾所包含0的个数
这是一个有趣的问题。例如,5!=120,其末尾所含有的“0”的个数为1;10!= 3628800,其末尾所含有的“0”的个数为2;20!= 2432902008176640000,其末尾所含有的“0”的个数为4。这里先给出其计算公式,后面给出推导过程。令f(x)表示正整数x末尾所含有的“0”的个数,则有: 当0 当n >= 5时,f(n!) = k原创 2012-01-21 13:58:06 · 5486 阅读 · 0 评论 -
HDU 1568 Fibonacci
先看对数的性质,loga(b^c)=c*loga(b),loga(b*c)=loga(b)+loga(c);假设给出一个数10234432,那么log10(10234432)=log10(1.0234432*10^7)=log10(1.0234432)+7;log10(1.0234432)就是log10(10234432)的小数部分.log10(1.0234432)=0.010转载 2012-01-06 19:40:46 · 507 阅读 · 0 评论 -
携程预赛第一场第一题
题面: 森林中有一排香蕉树(无限长),一只猴子站在其中一棵树上,猴子在跳跃前要先抽取一张卡片,卡片上写有A+1个自然数,其中最后一个是B,前A个数只能小于等于B,卡片上的数字可以相同。猴子每次跳跃先从卡片上任选一个自然数C,然后向左、或向右跳C棵树。猴子的任务是:跳到与它左边相邻的香蕉树上时,就可以吃掉上面的香蕉。 例如,当A=2,B=4时,对于卡片(2, 3, 4),猴子就可以原创 2014-04-14 19:20:46 · 1385 阅读 · 0 评论