以下是一道私人题目的AC代码
#include<cstdio>
#define int long long
int q;
signed main()
{
scanf("%lld",&q);
while(q--)
{
int n;
scanf("%lld",&n);
int a=2*((2+n)*n/4-1),b=a-2;
if(!a||!b) printf("0\n");
else printf("%lld\n",a*b/2);
}
return 0;
}
在这里面中,我们把 int a=2*((2+n)*n/4-1),b=a-2; 替换成 int a=(2+n)*n/2-2,b=a-2; 就会全WA
起初我以为是 /4 会下取整的缘故,但是当我替换成 int a=2*(2+n)*n/4-2,b=a-2; 照样会全WA
long long 的问题?
int a=1ll*2*(2+n)*n/4-1ll*2,b=a-2;。嗯,还是全WA
这么玄学的吗