为什么要模1000000007
刷OJ时,经常会遇到要模1000000007。
先看一下常用数据类型的数值范围(32位系统)
| 字节 | 类型 | 范围 | 长度 |
|---|---|---|---|
| 一字节(2^8) | char | -128 ~ 127 | 3 |
| 一字节(2^8) | unsigned char | 0 ~ 255 | 3 |
| 二字节(2^16) | short | -32768 ~ 32767 | 5 |
| 二字节(2^16) | unsigned short | 0 ~ 65535 | 5 |
| 四字节(2^32) | unsigned int | 0~4294967295 | 10 |
| 四字节(2^32) | int | -2147483648~2147483647 | 10 |
| 四字节(2^32) | unsigned long | 0~4294967295 | 10 |
| 四字节(2^32) | long | -2147483648~2147483647 | 10 |
| 八字节(2^64) | long long (g++) | -9223372036854775808~9223372036854775807 | 19 |
| 八字节(2^64) | unsigned long long (g++) | 0~18446744073709551615 | 20 |
| 八字节(2^64) | __int64 (msvc) | -9223372036854775808~9223372036854775807 | 19 |
| 八字节(2^64) | unsigned __int64 (msvc) | 0~18446744073709551615 | 20 |
最小的十位质数1000000007
1000000007 是最小的十位质数。模1000000007,可以保证值永远在int的范围内。
本文解释了在编程竞赛中为何常使用模1000000007操作,该操作能确保计算结果始终位于32位整数的表示范围内。文中还列举了常见数据类型的取值范围。
1485





