我是传送门

这个题首先是先判断是等差还是等比数列

等差的话非常简单:

前后两个数是等差的,举个栗子:

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个数 及 快速幂的更多相关文章

  1. 总结-一本通提高篇&算竞进阶记录

    当一个人看见星空,就再无法忍受黑暗 为了点亮渐渐沉寂的星空 不想就这样退役 一定不会鸽の坑 . 一本通提高篇 . 算竞进阶 . CDQ & 整体二分 . 平衡树 . LCT . 字符串 . 随 ...

  2. $ybt\ 【信息学奥赛一本通】题解目录$

    [信息学奥赛一本通]题解目录 $ \large -> OJ$ $ problem1000 $ \(Answer\) - > $ \large 1000$ $ problem1001 $ \ ...

  3. 2019寒假练题计划——LibreOJ刷题计划 &《信息学奥赛一本通》提高版题目

    目录 2019.1.27 #10082. 「一本通 3.3 例 1」Word Rings 题意 思路 #10083. 「一本通 3.3 例 2」双调路径 题意 思路 #10084. 「一本通 3.3 ...

  4. 【13NOIP提高组】转圈游戏(信息学奥赛一本通 1875)(洛谷 1965)

    题目描述 nn 个小描述 n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从0 到 n-1.最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号 ...

  5. 信息学竞赛一本通提高版AC题解—例题1.1活动安排

    书中代码有误.书中为sort(a+1,a+n+1,Cmp). // // Created by yuxi on 19-1-13. // /* * * <信息学竞赛一本通-提高版>全部AC解 ...

  6. 【03NOIP普及组】麦森数(信息学奥赛一本通 1925)(洛谷 1045)

    [题目描述] 形如2P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2P-1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377,它 ...

  7. noip2013提高组day1第一题-转圈游戏——快速幂典型应用

    所谓的快速幂: // 计算 m^n % k 的快速幂算法 int quickpow(int m,int n,int k) { ; ) { ) b = (b*m)%k; n = n >> ; ...

  8. 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− ...

  9. bzoj 3992 [SDOI2015]序列统计——NTT(循环卷积&&快速幂)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3992 有转移次数.模M余数.方案数三个值,一看就是系数的地方放一个值.指数的地方放一个值.做 ...

随机推荐

  1. ES7.3.0配置

    # elasticsearch.yml cluster.name: my-application node.name: node-1 node.master: true node.ingest: tr ...

  2. springboot初体验-不知道怎么创建spring-boot项目?

    https://spring.io/projects/spring-boot/ 在以上地址找到 Quick start Bootstrap your application with Spring I ...

  3. .net HttpClient 回传实体帮助类

    public class HttpClientHelper<T> { /// <summary> /// Get请求 返回实体 /// </summary> /// ...

  4. 端口排查步骤-7680端口分析-Dosvc服务

    出现大量7680端口的内网连接,百度未找到端口信息,需证明为系统服务,否则为蠕虫 1. 确认端口对应进程PID netstat -ano 7680端口对应pid:6128 2. 查找pid对应进程 t ...

  5. listener中@Autowired无法注入bean的一种解决方法

    背景:使用监听器处理业务,需要使用自己的service方法: 错误:使用@Autowired注入service对象,最终得到的为null: 原因:listener.fitter都不是Spring容器管 ...

  6. 时间格式在ios和安卓兼容性的问题:

    在做项目时,在时间显示上遇到一个问题,取后台返回的时间时,在ios手机上时间不显示,安卓手机正常,最后通过Vconsole工具发现,ios不能支持用“—”分割的时间,此外后台返回的时间格式为x年x月x ...

  7. Web消息推送框架windows部署实践

    一.官方下载地址:https://www.workerman.net/web-sender 二.解压至任意目录下,双击start_for_win.bat,效果如下图: 三.打开Chrome浏览器访问: ...

  8. linux系统crontab

    一.cron 简介 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间. cro ...

  9. 关于“在从服务器接收结果时发生传输级错误。 (provider: TCP Provider, error: 0 - 指定的网络名不再可用。)”的解决方法之一

    最近几天发现连sql数据库服务器的时候,总是提示“在从服务器接收结果时发生传输级错误. (provider: TCP Provider, error: 0 - 指定的网络名不再可用.)”的错误. 网上 ...

  10. 一款APP的完整开发流程 (转载)

    来源:https://www.sohu.com/a/239089829_100063940 近年来,在市场和政策的双轮驱动下,我国服务外包产业快速发展,服务智能化趋势显现.随着企业核心业务外包活动的日 ...