信息学奥赛一本通 提高篇 序列第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余数.方案数三个值,一看就是系数的地方放一个值.指数的地方放一个值.做 ...
随机推荐
- ASP.NET MVC 允许跨域请求设置
场景:创建一个图片上传的站点,用于其他站点跨域上传附件和图片之类. 上传插件结合百度的 webuploader.js 经常会碰到,跨域的问题,如下, 处理方式呢,是在web.config 中配置允许跨 ...
- 2019-07-31 Jquery
Jquery是什么? jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架).jQuery设计的宗旨是“ ...
- Microsoft SQL Server数据库语法
目录 关于数据库的语法: 1.创建数据库 create database 数据库名on primary(主文件属性(name,filename,size等)) -用逗号隔开次要主要文件和次要文件( ...
- 从 Vue 的视角学 React(二)—— 基本语法
基于 Vue.js 开发的时候,每个 vue 文件都是一个单独的组件,可以包含 HTML,JS,CSS 而 React 是以函数为基础,每个 function 就是一个组件.虽然 JSX 让 HTML ...
- Web前端2019面试总结2
1.js继承: 想要继承,就必须要提供个父类(继承谁,提供继承的属性) 组合继承(组合原型链继承和借用构造函数继承)(常用) 重点:结合了两种模式的优点,传参和复用 特点:1.可以继承父类原型上的属性 ...
- 【 Android 】ViewPager + TabLayout + Fragment 数据初始化问题
在 ViewPager 和 Fragment 配合使用的时候,ViewPager 会使用预加载机制,使得我们在没有切换到到对应页面时,就已经加载好了,这是个非常不好的用户体验. 所以本示例项目就诞生了 ...
- Kubernetes学习之路(27)之k8s 1.15.2 部署
目录 一.环境准备 二.软件安装 三.部署master节点 四.部署node节点 五.集群状态检测 一.环境准备 IP地址 节点角色 CPU Memory Hostname Docker versio ...
- vimplus基本操作
1. YouCompleteMe按tab键,自动补全 2. vim-commentary添加注释,以及取消注释gcc 注释当前行(普通模式)gc 可视模式下,注释当前选中的部分gcu 撤销上一次注释的 ...
- GRUB配置与应用,启动故障分析解决
一.GRUB启动位置 GRUB是现今大多数Linux系统采用的自举程序,这里先来看一下Linux的程序顺序: 执行顺序 动作 固件Firmware(CMOS/BIOS) → POST(Pwer ...
- 终于有人把Elasticsearch原理讲透了!
终于有人把Elasticsearch原理讲透了! http://developer.51cto.com/art/201904/594615.htm 小史是一个非科班的程序员,虽然学的是电子专业,但是通 ...