icpc:problems:kill_demodogs
目录
problems | |
---|---|
名称 | Kill Demodogs |
题目编号 | 841B |
题目链接 | codeforces.com/… |
来源 | CodeForces |
算法分类 | 数学, 贪心 |
难易程度 | 看懂题解 |
Kill Demodogs
想法
首先需要能猜到每次「向右+向下」。需要贪心知道2数和相等的时候越接近,乘积越大。
然后就是公式推导:
$$ \sum_{i=1}^{n} i*i + \sum_{i=1}^{n-1}i*(i-1) $$
$$ \frac{n*(n+1)*(2n+1)}{6} + \frac{n*(n-1)*(2n-1)}{6} + \frac{n*(n-1)}{2} = \frac{n*(n+1)*(4n-1)}{6} $$
前提需要知道平方和公式:
$$ \sum_{i=1}^{n}i^2 = \frac{n*(n+1)*(2n+1)}{6} $$
代码实现
#include<iostream> const long long int mod = 1e9 + 7; int main() { int T; std::cin >> T; while(T--) { long long int n, sum = 0; std::cin >> n; sum = (((n*(n+1)) % mod) * (4 * n - 1) % mod) * 337 % mod; std::cout << sum << std::endl; } return 0; }
/app/www/public/data/pages/icpc/problems/kill_demodogs.txt · 最后更改: 2023/09/30 14:00 由 温婕莺