听取MLE声一片 @ 2020-12-19 15:17:57
乘1ll是须要放在开头吗?做树状数组题的时候放在后面WA,放在前面AC。(肯定是我太菜了所以我不知道)
WA:https://www.luogu.com.cn/record/43901338
AC:https://www.luogu.com.cn/record/43901361
再看看 这篇博客感觉好奇怪了,有没有dalao讲解一下
by Ryo_Yamada @ 2020-12-19 15:20:36
int x = 1e9, y = 1e9;
ll ans = x * y * 1ll;
ll ans2 = 1ll * x * y;
printf("%lld ---- %lld\n", ans, ans2);
by 鏡音リン @ 2020-12-19 15:25:06
拿脚趾头想就知道肯定不能放后面吧
by 鏡音リン @ 2020-12-19 15:25:41
1ll的目的是让乘法不溢出,你先乘溢出完了再转ll还有啥用
by Ryo_Yamada @ 2020-12-19 15:25:41
铃酱 /se
好像确实是这样的
by 江户川·萝卜 @ 2020-12-19 15:27:29
例如:(a,b都是int类型)
1ll*a*b相当于(1ll*a)*b 是将a乘上1ll变为long long类型后再乘b。如1ll*1e9*1e9=1e9(long long)*1e9
a*b*1ll相当于(a*b)*1ll:
a*b是将a乘以b的结果用int类型储存,可能会溢出。1ll,使其变为long long类型,其值不变。如1e9*1e9*1ll=(设c=1e9*1e9用int存储溢出之后的值)c*1ll=c(long long)
by 听取MLE声一片 @ 2020-12-19 15:35:50
懂了谢谢!
by 听取MLE声一片 @ 2020-12-19 15:36:06
@江户川·萝卜 您咋藏勾了
by 江户川·萝卜 @ 2020-12-19 15:54:57
@听取MLE声一片 啊为啥不藏钩啊/fad
by 绝顶我为峰 @ 2020-12-19 16:00:19
铃/se