关于 __int128
  • 板块P7813 谜
  • 楼主Liweiang
  • 当前回复8
  • 已保存回复8
  • 发布时间2021/8/23 18:45
  • 上次更新2023/11/4 09:18:51
查看原帖
关于 __int128
445476
Liweiang楼主2021/8/23 18:45

按照我的写法,如果用 long long,sub#4就会爆。 但如果把 long long 都改成 __int128 就 AC 了,请问各位大佬这是为什么?


AC代码:

#include<bits/stdc++.h>
#define md 1000000007
using namespace std;
int main() 
{
	long long t,n,k;
	cin>>t; 
	while(t--){
		__int128 maxn=0,ans=0;
		cin>>n>>k;
		if(k==1){
			cout<<n*(n+1)/2%md<<endl;continue;
		}
		maxn=n*(n+1)/2;
		__int128 tt=(n-1)*n/2,shang=k/2,xia=k-shang;
		__int128 ans_s=(((tt-shang+1)+tt)*shang/2);
		__int128 ans_x=(((maxn-xia+1)+maxn)*xia/2);
		ans=(ans_s+ans_x)%md;
		cout<<(long long)ans%md<<endl;
	} 
	return 0;
}

另外问一句:__int128 在 CSP 比赛中可以用吗?

2021/8/23 18:45
加载中...