信息学奥赛一本通 提高篇 序列第k个数 及 快速幂
这个题首先是先判断是等差还是等比数列
等差的话非常简单:
前后两个数是等差的,举个栗子:
3 6 9 12
这几个数,(我感觉 1 2 3 4并说明不了什么)
每次都加3嘛,很容易看出,第一个数是3 * 1,第二个是3 * 2....以此类推
第k个数 = (第2个数 - 第1个数) * k ;
(z - y) * k %
% 200907 的原因是题目要求
但是这样并不能过
hack一下
4 7 10 13
用原先的公式:
(7 - 4) * 4 % 200907 = 12;
明显不对啊
但是我们将序列每个都减一
就变成了: 3 6 9 12
熟悉滴感觉,但我们并不需要真的都减一,只需要加上差就可以了
x + (z - y) * (k - ) %
这个和我说的有些出入,但仔细想想就会发现是一样的
等比的话稍微难一点:
前后两个数是等比的,举个栗子:
3 6 18 27
第一个数是3^1
第二个数是3^2
第三个数是3^3
emmm,好像也很简单

这数据 不能乘10^9次吧
100000000000000% 超时
快速幂不错
快速幂怎么写呢
我在这里说一种非递归写法(其实本蒟蒻根本不明白递归的实现)
把幂次拆成二进制数,只需要乘log n 次,非常优秀的算法
比如 2 ^ 10 的二进制是 2的1010次幂
ans 就是 2 ^ 2 * 2 ^ 8 ;
当然数学上来讲 2 ^ 2 * 2 ^ 8 = 2 ^ (2 + 10)
long long ksm(long long a,long long b,long long n){//a是底数,b是幂数,n是mod数
long long ans = ;
while(b){//等价于while(b != 0) ,dalao勿喷,讲给我这样的蒟蒻听
if ( b & ){//b & 1 等价于 b % 2 == 1
ans *= a;//是的话乘起来
ans %= ;//随时取膜性质
/* code */
}
a *= a;//下一位
a %= ;//膜
b >>= ;//右移一位 等价于 b /= 2;
}
return ans % ;
}
然后问题还是来了
20 920 42320
这个显然是等比数列920 : 20 = 46
但是怎么用快速幂呢
20 = 1 * 20
920 = 46 * 20
42320 = 46 * 46 * 20
那么20 920 42320 和1 45 2025什么区别呢
就是前者每一项是后者20倍
求出后者就能求出前者啦
这个代码不需要解释了吧
#include <bits/stdc++.h>
using namespace std;
long long ksm(long long a,long long b,long long n){
long long ans = ;
while(b){
if ( b & ){
ans *= a;
ans %= ;
/* code */
}
a *= a;
a %= ;
b >>= ;
}
return ans % ;
} int main()
{
long long n;
cin>>n;
for (long long i = ; i < n; ++i)
{
long long x, y, z, k;
cin>>x>>y>>z>>k;
if (z - y == y - x)
{
cout<<x + (z - y) * (k - ) % <<endl;
/* code */
}
else{
long long yy = k / * ;
yy /= x;
yy *= y % ;
cout/*<<y / x<<' '<<k - 1<<" "*/<<ksm(y / x , k - , ) * x % <<endl;
// cout<<ppw(x , yy , 200907 , k , y / x)<<endl;
}
/* code */
}
return ;
}
信息学奥赛一本通 提高篇 序列第k个数 及 快速幂的更多相关文章
- 总结-一本通提高篇&算竞进阶记录
当一个人看见星空,就再无法忍受黑暗 为了点亮渐渐沉寂的星空 不想就这样退役 一定不会鸽の坑 . 一本通提高篇 . 算竞进阶 . CDQ & 整体二分 . 平衡树 . LCT . 字符串 . 随 ...
- $ybt\ 【信息学奥赛一本通】题解目录$
[信息学奥赛一本通]题解目录 $ \large -> OJ$ $ problem1000 $ \(Answer\) - > $ \large 1000$ $ problem1001 $ \ ...
- 2019寒假练题计划——LibreOJ刷题计划 &《信息学奥赛一本通》提高版题目
目录 2019.1.27 #10082. 「一本通 3.3 例 1」Word Rings 题意 思路 #10083. 「一本通 3.3 例 2」双调路径 题意 思路 #10084. 「一本通 3.3 ...
- 【13NOIP提高组】转圈游戏(信息学奥赛一本通 1875)(洛谷 1965)
题目描述 nn 个小描述 n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从0 到 n-1.最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号 ...
- 信息学竞赛一本通提高版AC题解—例题1.1活动安排
书中代码有误.书中为sort(a+1,a+n+1,Cmp). // // Created by yuxi on 19-1-13. // /* * * <信息学竞赛一本通-提高版>全部AC解 ...
- 【03NOIP普及组】麦森数(信息学奥赛一本通 1925)(洛谷 1045)
[题目描述] 形如2P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2P-1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377,它 ...
- noip2013提高组day1第一题-转圈游戏——快速幂典型应用
所谓的快速幂: // 计算 m^n % k 的快速幂算法 int quickpow(int m,int n,int k) { ; ) { ) b = (b*m)%k; n = n >> ; ...
- 2018.12.31 bzoj3992: [SDOI2015]序列统计(生成函数+ntt+快速幂)
传送门 生成函数简单题. 题意:给出一个集合A={a1,a2,...as}A=\{a_1,a_2,...a_s\}A={a1,a2,...as},所有数都在[0,m−1][0,m-1][0,m− ...
- bzoj 3992 [SDOI2015]序列统计——NTT(循环卷积&&快速幂)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3992 有转移次数.模M余数.方案数三个值,一看就是系数的地方放一个值.指数的地方放一个值.做 ...
随机推荐
- SQL server中常用sql语句
--循环执行插入10000条数据 declare @ID intbeginset @ID=1 while @ID<=10000begininsert into table_name values ...
- Python - 实现矩阵转置
有个朋友提出了一个问题:手头上现在有一个二维列表,比如[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]],现在要把该二维列表变成为[[1, 4, 7, 10 ...
- 安全SECUERITY单词SECUERITY证券
中文名:证券业 外文名:secuerity 含义:指从事证券发行和交易服务 性质:证券市场的基本组成要素 组成:证券交易所.证券公司 目录 1 证券评级 2 证券定义 ? 涵义 ? 内容 ? 分类 ? ...
- 将exe和dll打包为一个exe文件
通过Nuget安装Costura.Fody 公司项目需要支持.NET 4.0(使用VS2017),Costura.Fody库从3.2.1开始支持4.0,但是不能装最新的Fody,否则会提示: Fody ...
- 【异常】java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
异常原因:没有指定数据精度导致数据运算无法正常结算 如执行下面的除法: ).divide(BigDecimal.valueOf()).intValue(); 指定精度后就可以了: ).divide(B ...
- 第十一周LINUX 学习笔记
keepalived keepalived: 基于vrrp(虚拟冗余路由协议)的实现 virtual server: 对于IPVS vrrp_script: 调用外部脚本 ngin ...
- HTTP状态码面试必知
typora-root-url: ./HTTPCODE HTTP状态码必知必会 这里主要介绍运维过程中经常遇到的状态码.并通过业界流行的Nginx进行模拟实现,让大家能有一种所见即所得的感觉.希望大家 ...
- Educational Codeforces Round 68 E. Count The Rectangles
Educational Codeforces Round 68 E. Count The Rectangles 传送门 题意: 给出不超过\(n,n\leq 5000\)条直线,问共形成多少个矩形. ...
- Jmeter中while循环逻辑控制器+配置元件计数器的用法
一.在线程组下添加逻辑控制器While Controller 二.在逻辑控制器While Controller下添加Sample,BeanShell Sampler , 三.逻辑控制器While Co ...
- ‘cmake' 不是内部或外部命令 也不是可运行的程序 或批处理文
在 Win7下的命令行模式下,输入cmake相关命令,出现如下错误: ’cmake' 不是内部或外部命令 也不是可运行的程序 或批处理文件 解决方法: 在环境变量中添加cmake的文件路径. 计算机( ...