求助取模问题
查看原帖
求助取模问题
566363
GY程袁浩楼主2024/7/11 15:33

老是不对,现在又卡在第12个点, 500000004500000004 是 22 在模 1e9+71e9+7 意义下的逆元

代码如下:

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int P=1e9+7;
int ads(int x,int y,int d) {
    if(d==0) return x%P;
    return (((x+y+P)%P+P)%P*(((y-x)/d%P+1+P)%P)+P)%P*500000004%P;
}
int H(int x,int y) {
    int sum=0,l=1;
    while(l<=y) {
        int r=x/(x/l)+1;
        r=min(r,y+1);
        int len=r-l-1,k=x/l;
        sum=(sum+ads(x%l-len*k,x%l,k)+P)%P;l=r;
    }
    return sum;
}
int n,k;
signed main() {
    cin>>k>>n;
    if(n<=k) cout<<(H(k,n)+P)%P<<endl;
    else cout<<(H(k,k)%P+k*(n-k)%P+P)%P<<endl;
    return 0;
}
2024/7/11 15:33
加载中...