zoukankan      html  css  js  c++  java
  • luogu五一 数学 day3 数学漫谈

    求证:逆元的存在性

    1570523145673

    #include<bits/stdc++.h>
    using namespace std;
    
    int main(){
    	rd(a),rd(b),rd(c),rd(d);
        //lcm(a*d,b*c)
        printf("%lf",(a*b*c*d/__gcd(a*d,c*d))/(b*d));
    	return 0;
    }
    
    

    1570523454431

    调和级数分析暴力复杂度

    输入的时候开一个buck[x]++;
    dwn(d,1000000,1)
    	判断d的倍数的个数是否>=k,并输出第一个满足条件的d
        	枚举rep(i,1,n/d)cnt+=w[d*i];
          		if(cnt>=k){	
            		printf("%d",d);
            		exit(0);
          		} 
    

    复杂度分析

    枚举每个d的复杂度是O(n/d)的,总复杂度:
    n/(10w)+n/(10w-1)+n/(10w-2)+...+n/2+n/1

    根据调和级数,复杂度为O(nlogn),可以通过本题1e6的数据

    1570523970659

    1570524023354

    自己推柿子

    1570524174365

    课后作业:古代猪文


    求证:gcd(f[n],f[m])==f[gcd(n,m)];

    引理1:

    Gcd(F[n+1],F[n])=1;
    证明:
    根据辗转相减法则
    Gcd(F[n+1],F[n])

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

    =gcd(f[n],f[n-1])

    .

    .

    .

    =gcd(f[2],f[1])

    =1

    引理2:

    f[m+n]=f[m-1][n]+f[m][n+1]

    证明:

    f[n+m]

    =f[n+m-1]+f[n+m-2]

    =2*f[n+m-2]+f[n+m-3]

    =...

    f[n+m]=a[x]*f[n+m-x]+b[x]*f[n+m-x-1];

    = (a[x]+b[x])*f[n-m-x-1]+a[x]*f[n+m-x-2];

    当x=1时有 a[1]=f[2]; b[1]=f[1];
    当x=2时有 a[2]=f[2]+f[1]=f[3]; b[2]=a[1]=f[2];
    当x=k+1时有

    a[k+1]=a[k]+b[k]=f[k+1]+f[k]=f[k+2]

    b[k+1]=a[k]=f[k+1];

    所以当x=n时有

    F[n+m]=a[n]*F[m]+b[n]*F[m-1];

    =f[n+1][m]+f[n][m-1];

    引理3:

    gcd(f[n+m],f[n])==gcd(f[n],f[m])

    证明:

    gcd(f[n+m],f[n])

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

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

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

    =gcd(f[m],f[n]);

    于是显然有:Gcd(F[n],F[m])=F[Gcd(n,m)];

  • 相关阅读:
    浏览器同源政策及其规避方法---转阮大神
    js跨域详解
    js中top、self、parent
    杂记
    DOM 踩踩踩
    java idea 连接数据库
    数据库mySQL常用命令
    用迭代实现80人围成一圈逢3取出
    如何把通过类建立的对象存入数组中.
    面向对象编程
  • 原文地址:https://www.cnblogs.com/sjsjsj-minus-Si/p/11636678.html
Copyright © 2011-2022 走看看