int128 相关
约 260 字小于 1 分钟
2026-01-23
警告
本模板为了便于理解,包含了大量的详细注释以及规范的 std:: 命名空间前缀。在您将代码复制并提交至相关竞赛或评测平台前,请务必根据个人的编程习惯进行调整,重点建议删除冗余注释并精简代码风格。保留明显的模板特征极易被系统的查重算法或 AIGC 监测机制误标为“人工智能生成内容”,从而对您的评审进度或最终成绩产生不利影响。
字符串转int 128
stringToi128.cc
using i128 = __int128;
i128 toi128(const std::string &s)
{
i128 n = 0;
for (auto c : s)
{
n = n * 10 + (c - '0');
}
return n;
}开平方
sqrti128.cc
using i128 = __int128;
i128 sqrti128(i128 n)
{
i128 lo = 0, hi = 1E16;
while (lo < hi)
{
i128 x = (lo + hi + 1) / 2;
if (x * x <= n)
{
lo = x;
}
else
{
hi = x - 1;
}
}
return lo;
}最大公约数
gcdi128.cc
using i128 = __int128;
i128 gcd(i128 a, i128 b)
{
while (b)
{
a %= b;
std::swap(a, b);
}
return a;
}