博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
B.Icebound and Sequence
阅读量:6434 次
发布时间:2019-06-23

本文共 1031 字,大约阅读时间需要 3 分钟。

链接:

题意:

Icebound hates math. But Imp loves math. One day, Imp gave icebound a problem.

The problem is as follows.
S=(ni=1qi mod pS=(∑i=1nqi) mod p
For given q,n,p, you need to help icebound to calculate the value of S.

思路:

等比数列求和。

因为考虑到取余,所以不能直接算。

令S(n) 为等比数列前n项和。

若n为偶数:

  S(n) = S(n/2) + S(n/2)*a^(n/2) (因为第i(i <= n/2)项和i+n/2项存在第i项乘a^(n/2)等以第i+n/2项的值。

若n为奇数:

  S(n) = S(n/2) + S(n/2)*a^(n/2) + a^n

代码:

#include 
using namespace std;typedef long long LL;LL n, q, p;LL QM(LL a, LL b, LL m){ LL res = 1; while (b) { if (b&1) res = (res*a)%m; a = (a*a)%m; b >>= 1; } return res;}LL GetR(int t){ if (t == 1) return n%p; if (t%2 == 0) return (GetR(t/2)+(GetR(t/2)*QM(n, t/2, p))%p)%p; else return ((GetR(t/2)+(GetR(t/2)*QM(n, t/2, p))%p)%p+QM(n, t, p))%p;}int main(){ int t; cin >> t; while (t--) { cin >> n >> q >> p; cout << GetR(q) << endl; } return 0;}

  

转载于:https://www.cnblogs.com/YDDDD/p/10923486.html

你可能感兴趣的文章
面试题
查看>>
布局定位和图片属性
查看>>
java8新特性之lamda表达式
查看>>
HTTPS 配置教程
查看>>
Matrix源码分析————Resource Canary
查看>>
English Metric Units 介绍
查看>>
实现继承的几种方式及工作原理
查看>>
前端基础4:CSS文本样式和盒子模型问题
查看>>
数据库基本操做—表
查看>>
152 Maximum Product Subarray
查看>>
java版spring cloud+spring boot+redis多租户社交电子商务平台 (六)分布式配置中心(Spring Cloud Config)...
查看>>
TiDB 3.0.0 Beta.1 Release Notes
查看>>
E盘显示无法访问磁盘未被格式化,里面的资料怎么寻回
查看>>
oracle数据库的启动和停止
查看>>
《LoadRunner没有告诉你的》之七——使用 LoadRunner 连续长时间执行测试,如何保证参数化的数据足够又不会重复?...
查看>>
python easy_install django 安装
查看>>
web开发blog
查看>>
移动支付:暗礁险滩之地?——为《每周质量报告》挑挑刺
查看>>
读《图解HTTP》总结--第六章
查看>>
毕业就能拿到上万薪资的程序员他们都做了啥?
查看>>