CodePlus2017 12月月赛 div2可做题2
11月的月赛错过了,来打12月月赛,由于很(zi)想(ji)拿(tai)衣(ruo)服(la),所以去打div2。
T1是一个sb模拟,但是机房全卡死在这道语文题上了,基本上弄了一个半小时,T2可以秒杀,T4像一个数据结构神题,写了4个set+1个树状数组水了水。
然后就剩下我最怕的数学题。llj说这道题式子贼好推,你做做吧。我瑟瑟发抖。
下来看这道题,确实是道比较简单的数学题。
我们假设$F_i$为斐波那契数列的第$i$项,
那么这道题第$k$项就应该是$A_k = A_1 \times F_{k-2} + A_2 \times F_{k-1}$
那么我们需要求满足$A_1 \times F_{k-2} + A_2 \times F_{k-1} \equiv m \pmod{p}$的$A_2$的个数。
那么直接用exgcd求最小整数解就可以啦。
(update 1229)贴个代码:
//Serene
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
using namespace std;
#define ll long long
ll T,p,n,m;
ll f[3],g[3][3],f2[3],g2[3][3]; ll aa;char cc;
ll read() {
aa=0;cc=getchar();
while(cc<'0'||cc>'9') cc=getchar();
while(cc>='0'&&cc<='9') aa=aa*10+cc-'0',cc=getchar();
return aa;
} ll gcd(ll x,ll y) {
return y==0? x:gcd(y,x%y);
} void cf1() {
memcpy(f2,f,sizeof(f));
f[1]=f2[1]*g[1][1]%p+f2[2]*g[2][1]%p;
f[2]=f2[1]*g[1][2]%p+f2[2]*g[2][2]%p;
if(f[1]>=p) f[1]-=p;
if(f[2]>=p) f[2]-=p;
} void cf2() {
memcpy(g2,g,sizeof(g));
memset(g,0,sizeof(g));
for(int i=1;i<=2;++i) for(int j=1;j<=2;++j) for(int k=1;k<=2;++k) {
g[i][j]+=g2[i][k]*g2[k][j]%p;
if(g[i][j]>=p) g[i][j]-=p;
}
} void qpz(ll k) {
f[1]=f[2]=1; g[1][1]=0;
g[1][2]=g[2][1]=g[2][2]=1;
while(k) {
if(k&1) cf1();
cf2(); k>>=1;
}
} ll qp(ll x,ll k) {
ll rs=1;
while(k) {
if(k&1) rs=rs*x%p;
k>>=1; x=x*x%p;
}
return rs;
} void exgcd(ll a,ll b,ll &x,ll &y) {
if(!b) {
x=1; y=0;
return;
}
exgcd(b,a%b,y,x);
y-=(a/b)*x;
} ll get_ans(ll r,ll x,ll b) {
if(r<0) return 0;
ll rs=r/b;
if(r%b>=x) rs++;
return rs;
} int main() {
T=read();ll x,y,a,b,c,o,l,r,w;
while(T--) {
w=read(); l=read(); r=read();
n=read(); p=read(); m=read();
qpz(n-3);
a=f[2]; b=p; c=(m%p-w%p*f[1]%p+p)%p;//
if(c%(o=gcd(a,b))) {
printf("0\n"); continue;
}
a/=o; b/=o; c/=o;
exgcd(a,b,x,y); x*=c;
x%=b; if(x<0) x+=b;
printf("%lld\n",get_ans(r,x,b)-get_ans(l-1,x,b));
}
return 0;
}
/*
1
692858490132927148 33 93 11 90 52
*/
CodePlus2017 12月月赛 div2可做题2的更多相关文章
- CodePlus2017 12月月赛 div2火锅盛宴
当时看到这道题感觉真是难过,我数据结构太弱啦. 我们来看看需要求什么: 1.当前熟了的食物的最小id 2.当前熟了的食物中有没有编号为id的食物 3.当前没熟的食物中有没有编号为id的食物 4.当前没 ...
- 洛谷4030(Codeplus11月月赛)可做题1
题目:https://www.luogu.org/problemnew/show/P4030 原来一个方阵巧妙的充要条件是该方阵的每个2*2子方阵都是巧妙的!!! 可以把每一行选的列视为一个排列,需要 ...
- 安恒X计划12月月赛
ezweb 主要是序列化问题.没有PHP环境,在线运行的.实例化对象之后修改一下file.然后echo输出序列化的结果.不过下面有一个正则检查.数字前加一个+,影响了正则的匹配,但是对于序列化的还原没 ...
- 最大字段和&洛谷11月月赛DIV2 T1
蒟蒻只能打一打DIV2的基础题 太卑微了 这道题的本质其实是再建一个数组,如果s串i位置是0那么就给a[i]赋值为1,表示要累加个数,如果是1那么就把a[i]赋值为-1,表示个数减一,最后求最大子段和 ...
- 「CodePlus 2017 12 月赛」可做题2(矩阵快速幂+exgcd+二分)
昨天这题死活调不出来结果是一个地方没取模,凉凉. 首先有个一眼就能看出来的规律... 斐波那契数列满足$a_1, a_2, a_1+a_2, a_1+2a_2, 2a_1+3a_2, 3a_1+5a_ ...
- 【LIbreOJ】#6256. 「CodePlus 2017 12 月赛」可做题1
[题意]定义一个n阶正方形矩阵为“巧妙的”当且仅当:任意选择其中n个不同行列的数字之和相同. 给定n*m的矩阵,T次询问以(x,y)为左上角的k阶矩阵是否巧妙.n,m<=500,T<=10 ...
- 【LibreOJ】#6257. 「CodePlus 2017 12 月赛」可做题2
[题意]数列满足an=an-1+an-2,n>=3.现在a1=i,a2=[l,r],要求满足ak%p=m的整数a2有多少个.10^18. [算法]数论(扩欧)+矩阵快速幂 [题解]定义fib(i ...
- 洛谷3月月赛div2 题解(模拟+数学+贪心+数学)
由于本人太蒻了,div1的没有参加,胡乱写了写div2的代码就赶过来了. T1 苏联人 题目背景 题目名称是吸引你点进来的. 这是一道正常的题,和苏联没有任何关系. 题目描述 你在打 EE Round ...
- code+12月月赛 火锅盛宴
时间限制: 2.0 秒 空间限制: 512 MB 题目背景 SkyDec和YJQQQAQ都是Yazid的好朋友.他们都非常喜欢吃火锅.有一天,他们聚在一起,享受一场火锅盛宴. 题目描述 在这场火锅盛宴 ...
随机推荐
- [SHOI2007] 书柜的尺寸 思维题+Dp+空间优化
Online Judge:Luogu-P2160 Label:思维题,Dp,空间优化 题面: 题目描述 给\(N\)本书,每本书有高度\(Hi\),厚度\(Ti\).要摆在一个三层的书架上. 书架的宽 ...
- php用正则表达式匹配URL的简单方法(亲测可行)
https://www.jb51.net/article/43093.htm 在PHP的官网上看到的parse_url()函数的替代方案.结果和parse_url()函数差不多,是使用正则实现的.UR ...
- MyBatis配置文件(八)--databaseIdProvider数据库厂商标识
databaseIdProvider元素主要是为了支持不同厂商的数据库,比如有时候我们在公司内部开发使用的数据库都是PG(Postgresql),但是客户要求使用MySql,那就麻烦了是吧?其实在my ...
- Elasticsearch快速开始
Elasticsearch是一个分布式RESTful风格的搜索和数据分析引擎 查询:Elasticsearch允许执行和合并多种类型的搜索——结构化.非结构化.地理位置.度量指标.搜索方式随心而变 分 ...
- Python list以及numpy处理技巧
1.numpy数组后面添加一个list: import numpy as np a=[[1,2,3],[4,5,6],[7,8,9]] box=np.array(a) box=np.vstack((b ...
- OpenCV2.4和OpenCV3之间函数的转变
OpenCV3里面没有自带opencv-contrib,需要自己手动安装,也很简单,直接在命令行里面打:pip install opencv-contrib-python 就能安装好了 OpenCV3 ...
- StopWatch 监控Java代码运行时间和分析性能
背景 有时我们在做开发的时候需要记录每个任务执行时间,或者记录一段代码执行时间,最简单的方法就是打印当前时间与执行完时间的差值,然后这样如果执行大量测试的话就很麻烦,并且不直观,如果想对执行的时间做进 ...
- mybatis框架学习:
一.什么是框架 它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题 使用框架的好处: 框架封装了很多的细节,使开发者可以使用极简的方式实现功能 大大提高开发效率 二.三层框架 表现层: 用 ...
- 跟我一起做一个vue的小项目(六)
接下来我们编写周末游组件 <template> <div> <div class="recommend-title">周末去哪儿</div ...
- CF 549B Looksery Party
题面 解题思路 如果a数组全部>0,那么都不去即可.从这个角度出发,每次选出a[i]为0的,让它们去更新a数组,相当于拓补排序. 代码 #include<iostream> #inc ...