数学
数学
必知数学
必知的数学知识(按照毕导的话来说 这都是小学二年级的
模运算
这个非常重要 不少题都需要对结果取余
逆元
奇偶性
取余法return x % 2;AND 操作
本质上是对1进行AND操作
return x & 1;
不难发现位运算比取余法要快得多
阶乘
对于一个正整数 都有
对于需要大量使用 不同数的阶乘 时 会产生大量的重复计算 这时 可以建立数组来储存
前 个自然数之和
循环/递归法
这种方法太慢了 但逻辑很简单 时间复杂度 非常慢
int sum(int n){
int ans = 0;
for(int i = 1;i<=n;i++){
ans += i;
}
return ans;
}公式法
不难发现 这是一个等差数列 则有
这个公式中 数太大了 稍作变形
这样就减少了溢出的风险 若不加 double 的话 记得判断 n 的奇偶性
快速幂
故便得此代码
long long qpow(long long a, long long b) {
long long res = 1;
for (; b; b >>= 1, a = a * a) // WTF AI写代码这么牛逼?
if (b & 1) res *= a;
return res;
}