bzoj4173 数学

Description


这里写图片描述

N,M<=10^15

Solution


首先需要知道一个结论,若 n%k+m%kk n % k + m % k ≥ k ,则 n+mknkmk=1 ⌊ n + m k ⌋ − ⌊ n k ⌋ − ⌊ m k ⌋ = 1
证明如下:
显然可以设 n=a1k+r1 n = a 1 k + r 1 m=a2k+r2 m = a 2 k + r 2 ,那么 n+mk=a1+a2+1 ⌊ n + m k ⌋ = a 1 + a 2 + 1 nk=a1 ⌊ n k ⌋ = a 1 mk=a2 ⌊ m k ⌋ = a 2
因为 r1+r2k r 1 + r 2 ≥ k 因此 r1+r2k=1 ⌊ r 1 + r 2 k ⌋ = 1

现在令 t=n%k+m%kkφ(k) t = ∑ n % k + m % k ≥ k φ ( k ) ,显然答案就是 φ(n)φ(m)t φ ( n ) ∗ φ ( m ) ∗ t
那么有 t=n%k+m%kkφ(k)=n+mk=1φ(k)[n+mknkmk=1] t = ∑ n % k + m % k ≥ k φ ( k ) = ∑ k = 1 n + m φ ( k ) [ ⌊ n + m k ⌋ − ⌊ n k ⌋ − ⌊ m k ⌋ = 1 ]
我们发现后面那一坨布尔表达式不为0就为1,那么有 t=n+mk=1φ(k)(n+mknkmk) t = ∑ k = 1 n + m φ ( k ) ( ⌊ n + m k ⌋ − ⌊ n k ⌋ − ⌊ m k ⌋ ) ,可以感受一下区别
那么拆一下就成了 t=n+mk=1φ(k)n+mknk=1φ(k)nkmk=1φ(k)mk t = ∑ k = 1 n + m φ ( k ) ⌊ n + m k ⌋ − ∑ k = 1 n φ ( k ) ⌊ n k ⌋ − ∑ k = 1 m φ ( k ) ⌊ m k ⌋

考虑一下 nk=1φ(k)nk ∑ k = 1 n φ ( k ) ⌊ n k ⌋ 的意义,有 nk=1φ(k)nk=nk=1nki=1φ(k)=ni=1k|iφ(k)=ni=1i ∑ k = 1 n φ ( k ) ⌊ n k ⌋ = ∑ k = 1 n ∑ i = 1 ⌊ n k ⌋ φ ( k ) = ∑ i = 1 n ∑ k | i φ ( k ) = ∑ i = 1 n i
辣莫 t=12[(n+m)(n+m+1)n(n+1)m(m+1)]=nm t = 1 2 [ ( n + m ) ( n + m + 1 ) − n ( n + 1 ) − m ( m + 1 ) ] = n m
ans=φ(n)φ(m)nm a n s = φ ( n ) ∗ φ ( m ) ∗ n m
惊喜不惊喜,意外不意外

Code


#include <stdio.h>
#include <string.h>
#define rep(i,st,ed) for (int i=st;i<=ed;++i)

typedef long long LL;
const int MOD=998244353;

void cal(LL &ret,LL x) {
    ret=ret/x;
    ret=ret*(x-1);
}

LL get_phi(LL n) {
    LL ret=n;
    for (LL i=2;i*i<=n;i++) {
        if (n%i) continue;
        cal(ret,i);
        while (n%i==0) n/=i;
    }
    if (n!=1) ret=(ret/n)*(n-1);
    return ret;
}

int main(void) {
    LL n,m; scanf("%lld%lld",&n,&m);
    printf("%lld\n",n%MOD*m%MOD*(get_phi(m)%MOD)%MOD*(get_phi(n)%MOD)%MOD);
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值