码迷,mamicode.com
首页 > 其他好文 > 详细

BZOJ 4173 数论

时间:2017-04-25 16:45:08      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:printf   clu   mod   color   lld   name   bsp   amp   style   

思路:

$(m%k+n%k>=k) *phi(k)$

$我们不妨设n=q_1k+r_1 m=q_2k+r$2

$n+m=(q_1+q_2)k+r1+r2$

${\lfloor}\frac{n+m}{k}{\rfloor}-{\lfloor}\frac{m}{k}{\rfloor}-{\lfloor}\frac{n}{k}{\rfloor}=(m%k+n%k>=k)$

$原式=phi(k)*({\lfloor}\frac{n+m}{k}{\rfloor}-{\lfloor}\frac{m}{k}{\rfloor}-{\lfloor}\frac{n}{k}{\rfloor})$

$id=phi|1$

$n=\Sigma_{d|n}phi(d)$

$原式=\Sigma_{i=1}^{n+m}i-\Sigma_{i=1}^mi-\Sigma_{i=1}^ni$
$  =(n+m)*(n+m-1)/2+m*(m-1)/2+n*(n-2)/2$
$  =n*m$

 

//By SiriusRen
#include <cstdio>
using namespace std;
typedef long long ll;
ll n,m,mod=998244353;
ll phi(ll x){
    ll res=1;
    for(int i=2;1LL*i*i<=x;i++){
        if(x%i==0){
            while(x%i==0)x/=i,res=res*i;
            res=res/i*(i-1);
        }
    }if(x!=1)res=res*(x-1);
    return res;
}
int main(){
    scanf("%lld%lld",&n,&m);
    printf("%lld\n",((((phi(n)%mod)*(phi(m)%mod))%mod*(n%mod))%mod*(m%mod))%mod);
}

 

BZOJ 4173 数论

标签:printf   clu   mod   color   lld   name   bsp   amp   style   

原文地址:http://www.cnblogs.com/SiriusRen/p/6762222.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!