数论相关

  学长说:SAM我研究过,我特别熟。然后一道SAM瞬间砍80points。

研究过的一些东西 用起来也才不会 感到陌生 或者不信任。

首先是数学归纳法 这个貌似很容易:

第一类也就是数学书上的一类 是指 :

(1)证明n=1时命题成立;
(2)假设n=k时命题成立;
(3)由归纳假设推出n=k+1时命题也成立。

其中k∈N*

这个正确性很显然 有了(2)(3) 那么就有了 当k==1时可推出 k==2 时正确的 然后一直推下去就推出所有的数字了。

最长建的例子就是 等差数列的求和公式 1+2+3+...n==(n+1)*n/2; 

利用数学归纳法证明:

1.当n==1时显然成立 2.假设n==k时成立 3.由2可得 1+2+...+k==(k+1)*k/2成立 现在要求k+1的等差数列 即等式两边同时加上k+1

然后 1+2+...+k+1==(k+1)*k/2+k+1==(k+1)*(k+2)/2; 然后发现了k+1也是成立的! 然后等差数列就被我们证明成功了。

第二类:

1.当n=1时,命题成立;

2.假设n<=k(k∈N*)时命题成立此时如果可推得n==k+1时命题成立那么命题对n∈N*都成立。

可以用这个来证明斐波那契数列的通项公式:

这是其通项公式的证明.但并非推导,推导比较难 水平达不到。

明明全是自然数的数列 通项公式却用无理数表示 amazing!

斐波那契和黄金分割的关系 

而且当n趋向于无穷大时,前一项与后一项的比值越来越逼近黄金分割0.618(或者说后一项与前一项的比值小数部分越来越逼近0.618)。

证明 :

这个证明的话 就比较好理解了。

特性

平方与前后项

从第二项开始,每个偶数项的平方都比前后两项之积少1,每个奇数项的平方都比前后两项之积多1。

如:第二项1的平方比它的前一项1和它的后一项2的积2少1,第三项2的平方比它的前一项1和它的后一项3的积3多1。

(注:奇数项和偶数项是指项数的奇偶,而并不是指数列的数字本身的奇偶,比如从数列第二项1开始数,第4项5是奇数,但它是偶数项,如果认为5是奇数项,那就误解题意,怎么都说不通)

证明经计算可得:[f(n)]^2-f(n-1)f(n+1)=(-1)^(n-1)

与集合子集

斐波那契数列的第n+2项同时也代表了集合{1,2,...,n}中所有不包含相邻正整数子集个数。

奇数项求和

偶数项求和

平方求和

隔项关系

f(2n-2m-2)[f(2n)+f(2n+2)]=f(2m+2)+f(4n-2m) [ n〉m≥-1,且n≥1]

两倍项关系

f(2n)/f(n)=f(n-1)+f(n+1)

其他公式

这些先摆到这知道即可。

这道题其实是有漏洞的 n,m<=1e9且取最后 的8位数字 还是Fn和Fm的最大公约数不知道这两个数字很难求最大公约数可这两个数字太大了,我想高精度都不行 或者是万精度都不一定能存的下,递推超时 而通项公式必然掉精度且找不到答案。采取矩阵乘法可以,但是依然很难得到答案。

大力猜结论 我猜 gcd(f[m],f[n])%1e8==gcd(f[m]%1e8,f[n]%1e8) 显然错误 随便找个数据就卡掉了 证明这个无疑是在证明 

gcd(f[m],f[n])%n==gcd(f[m]%n,f[n]%n) 简单证明一下这个就是错误的。

再次猜结论:那就只有一种可能了,就是gcd(f[m],f[n])%1e8=f[gcd(m,n)]%1e9

带入几组数据发现是正确的 然后交了发现A了。

关于 gcd(f[m],f[n])==f[gcd(n,m)]的证明题解之中讲的很清楚。

下面是过程 :设f[n]=a;f[n+1]=b; f[n+2]=a+b;f[n+3]=a+2b; 显然这样一直推下去 发现a,b 自行形成一个斐波那契数列。

而a的第一项是从n+2开始的 b的第一项是从n+1开始的那么显然 f[m]=f[m-n-1]*a+f[m-n]*b;

gcd(f[m],f[n])= gcd(f[m-n+1]*f[n]+f[m-n]*f[n+1],f[n]);

由更相减损术gcd(a,b)=gcd(a-b,b) 

证明 :设d=gcd(a,b) 那么此时则有 a=qd; b=q1d; gcd(qd,q1d)=gcd((q-q1)d,q1d);公约数还在得证。

此时 如上式子gcd(f[m],f[n])=gcd(f[m-n]*f[n+1],f[n])

由于gcd(f[n+1],f[n])==1证明:gcd(f[n+1],f[n])=gcd(f[n]+f[n-1],f[n])再由更相减损术得gcd(f[n+1].f[n])=gcd(f[n-1]f[n])=gcd(f[n],f[n-1])->gcd(f[1],f[2])=1;

得证。所以 gcd(f[m-n]*f[n+1],f[n])中f[n+1]对此f[n]的最大公约数为1 对此式子无贡献。

所以gcd(f[m-n]*f[n+1],f[n])=gcd(f[m-n],f[n]) ->gcd(f[m%n],f[n])这其实是在对n,m求gcd的过程当且仅当其中有一数为0也就是f[0]

此时结束 那么另外一数就是gcd(n,m)所以gcd(f[m%n],f[n])=f[gcd(n,m)]; 此时和原命题相同。

证毕。

然后gcd(f[m],f[n])%1e8=f[gcd(m,n)]%1e9 矩阵乘法优化一下即可。

posted @ 2019-04-30 09:56  chdy  阅读(250)  评论(0编辑  收藏  举报