51Nod-1969-Fire!
来源:互联网 发布:linux shell 打开目录 编辑:程序博客网 时间:2024/06/06 14:09
ACM模版
描述
题解
数论题,直接调用结论……要是想知道怎么证明,建议去看看那本叫做《初等数论及其应用》第七章部分讲有详细的推论与证明。
至于结论嘛,在题解中说的十分清楚了,贴出来大家看看吧……最讨厌这种题了……对我这样的数学渣滓来说,要命的。
P.s. 这尼玛都是神马玩意儿啊……
代码
#include <iostream>#include <cstdio>#include <cmath>using namespace std;const int MOD = 1e9 + 7;const int MAGIC = 998244352;const int MAXN = 1e5 + 10;int T, base;long long pow_base[MAXN];template <class T>inline void scan_d(T &ret){ char c; ret = 0; while ((c = getchar()) < '0' || c > '9'); while (c >= '0' && c <= '9') { ret = ret * 10 + (c - '0'), c = getchar(); }}void init(){ pow_base[0] = 1; pow_base[1] = base; for (int i = 2; i < T; i++) { pow_base[i] = base * pow_base[i - 1]; pow_base[i] %= MOD; }}int main(int argc, const char * argv[]){ cin >> T >> base; init(); long long N, ans = 0; while (T--) { scan_d(N); double tmp = sqrt(1 + 24 * N); int k1 = (tmp + 1) / 6; int k2 = (tmp - 1) / 6; if (k1 * (3 * k1 - 1) == 2 * N) { if (k1 & 1) { ans += (MAGIC * pow_base[T]) % MOD; } else { ans += pow_base[T]; } ans %= MOD; } else if (k2 * (3 * k2 + 1) == 2 * N) { if (k2 & 1) { ans += (MAGIC * pow_base[T]) % MOD; } else { ans += pow_base[T]; } ans %= MOD; } } printf("%lld\n", ans); return 0;}
阅读全文
0 0
- 51Nod-1969-Fire!
- Fire!
- Fire!
- Fire!
- Fire!
- Fire
- Fire!
- Fire!
- Fire
- 51Nod
- 51Nod
- 51nod
- 51Nod
- 51Nod
- 51Nod
- 51Nod
- 51Nod
- 51Nod
- 网络编程中(socket)用户登录验证以及注册(单用户)
- lua调用c++
- 比特币现金BCC的出现带来了这些套利机会
- BZOJ 3771 Triple
- java重载与覆盖的区别以及java多态实现的机制
- 51Nod-1969-Fire!
- hdu1058
- 3DSlicer6:编译、调试、规范化的开发
- Intellij IDEA的Hibernate简单应用
- 跟上Java8
- Kerberos协议
- Combinations问题及解法
- CodeChef
- urlsession 与后台下载