RE求条
查看原帖
RE求条
1353330
K_J_M楼主2025/2/6 15:07
#include<bits/stdc++.h>
using namespace std;
#define int __int128
const int mod = 19940417;
const int inv2 = 9970209;
const int inv6 = 3323403;
template<typename type>
inline void read(type &x){
    x=0;bool flag(0);char ch=getchar();
    while(!isdigit(ch)) flag=ch=='-',ch=getchar();
    while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
    flag?x=-x:0;
}
template<typename type>
inline void write(type x,bool mode=1){
    x<0?x=-x,putchar('-'):0;static short Stack[50],top(0);
    do Stack[++top]=x%10,x/=10; while(x);
    while(top) putchar(Stack[top--]|48);
    mode?putchar('\n'):putchar(' ');
}
int n,m;
int h(int n){
	n%=mod;
	return n*(n+1)%mod*inv2%mod;
}
int g(int n){
	n%=mod;
	return n*(n+1)%mod*(2*n%mod+1)%mod*inv6%mod;
}
int f(int k,int r){
	int sum=0;
	for(int i=1;i<=r;++i){
		int j=min(k/(k/i),r);
		sum=(sum+((h(j)-h(i-1))%mod+mod)%mod*(k/i)%mod)%mod;
		i=j;
	}
	return sum;
}
signed main(){
	read(n),read(m);
	int s1=f(n,n),s2=f(m,m),s3=f(m,n);
	int ans=0;
	ans=(ans+(((n*n%mod-s1)%mod+mod)%mod)*(((m*m%mod-s2)%mod+mod)%mod)%mod)%mod;
	ans=((ans-n*n%mod*m%mod)%mod+mod)%mod;
	ans=(ans+(m*s1%mod+n*s3%mod)%mod)%mod;
	int R=min(n,m),sum=0;
	for(int i=1;i<=R;++i){
		int to1=min(n/(n/i),R);
		int to2=min(m/(m/i),R);
		int j=min(to1,to2);
		sum=(sum+(n/i)*(m/i)%mod*((g(j)-g(i-1))%mod+mod)%mod)%mod;
		i=j;
	}
	write(((ans-sum)%mod+mod)%mod);
	return 0;
}
2025/2/6 15:07
加载中...