zoukankan      html  css  js  c++  java
  • bzoj4173 数学

    还是爆炸欧鸡的题难qwq

    [φ(n)*φ(m)*sum_{kin S(n,m)}φ(k)~mod~p,p=998244353且S(n,m)={n~mod~k+m~mod~kge~k}\ 打表都找出规律了555,写龟速乘写挂了,抱灵了,要不然就rank1了100pts->0\ 因为n~\%~k=n-lfloor frac nk floor*k\ S(n,m)等价于lfloorfrac{n+m}{k} floor-lfloorfrac nk floor-lfloorfrac mk floor=1\ sumφ(k)[n\%k+m\%kge k]=sumφ(k)[lfloorfrac{n+m}{k} floor-lfloorfrac nk floor-lfloorfrac mk floor=1]\ 因为0lelfloorfrac{n+m}{k} floor-(lfloorfrac nk floor+lfloorfrac mk floor)<2\ 所以上式可以化成sum_{k=1}^{n+m}φ(k)(lfloorfrac{n+m}{k} floor-lfloorfrac nk floor-lfloorfrac mk floor)\ =sum_{i=1}^{n+m}φ(k)lfloorfrac{n+m}{k} floor-sum_{k=1}^nlfloorfrac nk floorφ(k)-sum_{k=1}^mlfloorfrac mk floorφ(k),这里开始没搞懂,因为枚举超过n和m时就取0了\ sum_{k=1}^nφ(k)*lfloorfrac nk floor咋搞?通过sum_{k|n}φ(k)=n \ sum_{k=1}^nφ(k)*lfloorfrac nk floor=sum_{i=1}^nsum_{k|i}φ(k)=sum_{i=1}^ni\ [1,n]中约数有k的个数是lfloorfrac nk floor\ 然后等差求和了原式就为φ(m)*φ(n)*mn ]

    #include<bits/stdc++.h>
    #define mod 998244353
    using namespace std;
    typedef long long ll;
    const int inf =0x3f3f3f3f;
    const double eps=1e-8;
    ll read()
    {
        ll res=0,f=1;
        char ch=getchar();
        while(ch<'1'||ch>'9'){f=ch=='-'?-1:1;ch=getchar();}
        while(ch>'1'&&ch<'9'){res=res*10+ch-'0';ch=getchar();}
        return res*f;
    }
    ll n,m;
    ll phi(ll n)
    {
        ll i,re=n;
        for(i=2;i*i<=n;i++){
            if(n%i==0){
                re=re/i*(i-1);
                while(n%i==0){n/=i;}
            }
        }
        if(n!=1){re=re/n*(n-1);}
        return re;
    }
    int main()
    {
        scanf("%lld%lld",&n,&m);
        printf("%lld
    ",phi(n)%mod*(phi(m)%mod)%mod*(n%mod)%mod*(m%mod)%mod);
        return 0;
    }
    

    img
    上图是windfreedom大佬的博客截下来的 写下出处

    这题不用龟速乘qwq

  • 相关阅读:
    qt截取屏幕
    使用XmlTextReader 读取XML
    QQ2010 SP2 美化 皮肤 修改 透明 托盘 图标 RES.RDB 解包 打包 去广告 显IP
    发一个linux串口监视工具
    linux打包压缩命令汇总
    Qt实现遍历文件夹和文件目录(递归)
    linux忘记root密码的恢复方法
    centos x8664位版本 想安装qq for linux
    删除所有的.svn文件夹
    qtsdk1.2.1 静态编译
  • 原文地址:https://www.cnblogs.com/shikeyu/p/13381045.html
Copyright © 2011-2022 走看看