[問題] long long int 的餘數運算
在網路上看到一段code
// r = a * b % m
long long int mulmod(long long int a, long long int b, long long int m) {
long long int y = (long long int)((double)a*(double)b/m+0.5);
long long int r = (a*b-y*m) % m;
if (r < 0) r += m;
return r;
}
請問為什麼這樣寫就不會溢位?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.128.220
※ 編輯: DJWS 來自: 61.230.128.220 (02/14 21:39)
推
02/14 21:50, , 1F
02/14 21:50, 1F
→
02/14 21:50, , 2F
02/14 21:50, 2F
→
02/14 21:51, , 3F
02/14 21:51, 3F
推
02/14 22:03, , 4F
02/14 22:03, 4F
→
02/14 22:03, , 5F
02/14 22:03, 5F
→
02/14 22:06, , 6F
02/14 22:06, 6F
→
02/14 22:11, , 7F
02/14 22:11, 7F
→
02/14 22:15, , 8F
02/14 22:15, 8F
→
02/14 22:15, , 9F
02/14 22:15, 9F
→
02/14 22:18, , 10F
02/14 22:18, 10F
→
02/14 22:20, , 11F
02/14 22:20, 11F
→
02/14 22:20, , 12F
02/14 22:20, 12F
推
02/14 22:28, , 13F
02/14 22:28, 13F
→
02/14 22:29, , 14F
02/14 22:29, 14F
→
02/14 22:30, , 15F
02/14 22:30, 15F
→
02/14 22:30, , 16F
02/14 22:30, 16F
→
02/14 22:31, , 17F
02/14 22:31, 17F
→
02/14 23:09, , 18F
02/14 23:09, 18F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 4 篇):