社区讨论

求助why CE,洛谷评测机都没CE

CF249E Endless Matrix参与者 3已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lo1cfact
此快照首次捕获于
2023/10/22 18:45
2 年前
此快照最后确认于
2023/11/02 19:07
2 年前
查看原帖
估计是因为__int128
CPP
#include<bits/stdc++.h>
#define mod __int128(10000000000)
#define mo (long long)(10000000000)
using namespace std;
long long s(__int128 x,__int128 y)
{
	if(x==0||y==0) return 0;
	__int128 ans=0,n=min(x,y);
	if(n%2) ans=((((((n*n+1)/2)%mod)*n)%mod)*n)%mod;
	else ans=(((n*n/2)%mod)*((n*n+1)%mod))%mod;
	if(x>y)
	{
		__int128 b=(((((y-1)*(2*y-1))%(6*mod))*y)/6)%mod,c=(((((x-1)*(2*x-1))%(6*mod))*x)/6)%mod;
		c=(c-b+mod)%mod;
		ans=(ans+(c*y)%mod+((((y+1)*y/2)%mod)*(x-y))%mod)%mod;
	}
	if(y>x)
	{
		__int128 c=(((((y+1)*(2*y+1))%(6*mod))*y)/6)%mod,b=(((((x+1)*(2*x+1))%(6*mod))*x)/6)%mod;
		c=(c-b+mod)%mod;
		ans=(ans+(c*x)%mod+mod-((((x-1)*x/2)%mod)*(y-x))%mod)%mod;
	}
	return (ans%mod+mod)%mod;
}
long long sc(__int128 x,__int128 y)
{
	if(x==0||y==0) return 0;
	__int128 ans=0,n=min(x,y);
	if(n%2) ans=((((((n*n+1)/2))*n))*n);
	else ans=(((n*n/2))*(n*n+1));
	if(x>y)
	{
		__int128 b=((((y-1)*(2*y-1))*y)/6),c=((((x-1)*(2*x-1))*x)/6);
		c=c-b;
		ans=ans+(c*y)+((((y+1)*y/2))*(x-y));
	}
	if(y>x)
	{
		__int128 c=(((((y+1)*(2*y+1)))*y)/6),b=((((x+1)*(2*x+1))*x)/6);
		c=c-b;
		ans=(ans+(c*x)-((((x-1)*x/2))*(y-x)));
	}
	return ans;
}
long long t,xa,ya,xb,yb;
int main()
{
	cin>>t;
	for(int ac=1;ac<=t;ac++)
	{
		cin>>ya>>xa>>yb>>xb;
//		cout<<s(xb,yb)<<" "<<s(xb,ya-1)<<" "<<s(xa-1,yb)<<" "<<s(xa-1,ya-1)<<endl;
//		cout<<sc(xb,yb)-sc(xb,ya-1)-sc(xa-1,yb)+sc(xa-1,ya-1)<<endl;
		if(0>=sc(xb,yb)-sc(xb,ya-1)-sc(xa-1,yb)+sc(xa-1,ya-1)||10000000000<=sc(xb,yb)-sc(xb,ya-1)-sc(xa-1,yb)+sc(xa-1,ya-1)) cout<<"...";
		cout<<(s(xb,yb)-s(xb,ya-1)-s(xa-1,yb)+s(xa-1,ya-1)+3*mo)%mo<<endl;
	}
	return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...