常用函数重载
约 271 字小于 1 分钟
2026-01-23
警告
本模板为了便于理解,包含了大量的详细注释以及规范的 std:: 命名空间前缀。在您将代码复制并提交至相关竞赛或评测平台前,请务必根据个人的编程习惯进行调整,重点建议删除冗余注释并精简代码风格。保留明显的模板特征极易被系统的查重算法或 AIGC 监测机制误标为“人工智能生成内容”,从而对您的评审进度或最终成绩产生不利影响。
由于有些函数只会返回 float 所以在大数的时候会造成一些精度丢失,所以如果确定操作后是整数,那么有下面的重载:
精确开平方
sqrti.cc
using i64 = long long;
i64 sqrt(i64 n)
{
i64 s = std::sqrt(n);
while (s * s > n)
{
s--;
}
while ((s + 1) * (s + 1) <= n)
{
s++;
}
return s;
}精准log
logi.cc
int logi(int a, int b)
{
int t = 0;
i64 v = 1;
while (v < b)
{
v *= a;
t++;
}
return t;
}