2条回答 默认 最新
- 真相重于对错 2021-11-23 12:28关注
不要用递归,用递推。
还有计算 3^n ,数字会越界,大致代码如下long long PowerMod(long long a, long long b, int c) { long long ans = 1; a = a % c; while (b > 0) { if (b % 2 == 1) ans = (ans * a) % c; b = b / 2; a = (a * a) % c; } return ans; } int main() { unsigned long long f1 = 2, f0 = 1; unsigned long long f2 = 0; unsigned long long zeta = 0; int n; cin >> n; auto x =3*long long(pow(3, 37)); for (long long i = 2; i <= n; i++) { zeta = PowerMod(3, i, 100000007); f2 = (3 * f1+ 2 * f0 + i*zeta)%100000007; f0 = f1%100000007; f1 = f2; } cout << f2; }
解决 1无用
悬赏问题
- ¥20 c语言写的8051单片机存储器mt29的模块程序
- ¥60 求直线方程 使平面上n个点在直线同侧并且距离总和最小
- ¥50 java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。
- ¥50 rk3588板端推理
- ¥250 opencv怎么去掉 数字0中间的斜杠。
- ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?
- ¥250 paddleocr带斜线的0很容易识别成9
- ¥15 电子档案元素采集(tiff及PDF扫描图片)
- ¥15 flink-sql-connector-rabbitmq使用
- ¥15 zynq7015,PCIE读写延时偏大