济南学习 Day 2 T2 pm
她
【问题描述】
给你L,R,S,M,求满足L≤ (S × x) mod M ≤ R最小的正整数 X。
【输入格式】
第一行一个数T代表数据组数。
接下来一行每行四个数代表该组数据的L,R,S,M。
【输出格式】
对于每组数据,输出一行代表答案。如果不存在解,输出“−1” 。
【样例输入】
1
5 4 2 3
【样例输出】
2
【样例解释】
叫南小鸟。
【数据规模与约定】
30%的数据,保证有解且答案不超过10^ 6 。
另外20%的数据,L = R。
对于100%的数据,1 ≤ T ≤ 100,0 ≤ M,S,L,R ≤ 10 ^9
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=1e5+;
int a[N],top;
int erfen(int x){
int l=,r=top,mid,res=;
while(l<=r){
mid=(l+r)>>;
if(a[mid]>=x) res=mid,r=mid-;
else l=mid+;
}
return res;
}
int main(){
freopen("she.in","r",stdin);
freopen("she.out","w",stdout);
int i,j,k,n,m,s,l,r,x,now,t,ans,ans2;
bool fl;
scanf("%d",&t);
while(t--){
scanf("%d%d%d%d",&m,&s,&l,&r);
if(l>=m){printf("-1\n");continue;}
if(r>=m)r=m-;
now=;fl=;
top=;
for(n=;n*n<=m;n++){
now=(now+s)%m;
if(l<=now&&now<=r){
printf("%d\n",n);
fl=;break;
}
a[++top]=now;
}
--n;
int ste=a[top];
if(fl) continue;
sort(a+,a+top+);
for(now=;now*n<=m;now++){
l=(l-ste+m)%m;r=(r-ste+m)%m;
if(l>r) {
if(a[top]>=l){fl=;break;}
if(a[]<=r){fl=;break;}
}
else{
if(a[top]<l) continue;
int x=erfen(l);
if(a[x]<=r){fl=;break;}
}
}
if(!fl){printf("-1\n");continue;}
ans=now*n;
now=;
for(i=;i<=top;i++){
now=(now+s)%m;
if(l<=now&&now<=r)break;
}
ans+=i;
printf("%d\n",ans);
}
return ;
}
济南学习 Day 2 T2 pm的更多相关文章
- 济南学习 Day 3 T2 pm
LYK 快跑!(run)Time Limit:5000ms Memory Limit:64MB题目描述LYK 陷进了一个迷宫! 这个迷宫是网格图形状的. LYK 一开始在(1,1)位置, 出口在(n, ...
- 济南学习 Day 5 T2 pm
逆欧拉函数(arc)题目描述:已知phi(N),求N.输入说明:两个正整数,分别表示phi(N)和K.输出说明:按升序输出满足条件的最小的K个N.样例输入:8 4杨丽输出:15 16 20 24数据范 ...
- 济南学习 Day 5 T1 pm
欧拉函数(phi)题目描述: 已知(N),求phi(N). 输入说明: 正整数N. 输出说明: 输出phi(N). 样例输入: 8 样例输出: 4 数据范围: 对于20%的数据,N<=10^5 ...
- 济南学习 Day 4 T1 pm
幸运数字(number)Time Limit:1000ms Memory Limit:64MB题目描述LYK 最近运气很差,例如在 NOIP 初赛中仅仅考了 90 分,刚刚卡进复赛,于是它决定使用一些 ...
- 济南学习 Day 4 T2 am
LYK 与实验室(lab)Time Limit:5000ms Memory Limit:64MB题目描述LYK 在一幢大楼里,这幢大楼共有 n 层,LYK 初始时在第 a 层上.这幢大楼有一个秘密实验 ...
- 济南学习 Day 3 T3 pm
仙人掌(cactus)Time Limit:1000ms Memory Limit:64MB题目描述LYK 在冲刺清华集训(THUSC) !于是它开始研究仙人掌,它想来和你一起分享它最近研究的结果. ...
- 济南学习 Day 3 T1 pm
巧克力棒(chocolate)Time Limit:1000ms Memory Limit:64MB题目描述LYK 找到了一根巧克力棒,但是这根巧克力棒太长了,LYK 无法一口吞进去.具体地,这根巧克 ...
- 济南学习 Day 3 T2 am
看程序写结果(program)Time Limit:1000ms Memory Limit:64MB题目描述LYK 最近在准备 NOIP2017 的初赛,它最不擅长的就是看程序写结果了,因此它拼命地在 ...
- 济南学习 Day 2 T3 pm
它[问题描述]N个人坐成一圈,其中第K个人拿着一个球.每次每个人会以一定的概率向左边的人和右边的人传球.当所有人都拿到过球之后,最后一个拿到球的人即为胜者.求第N个人获胜的概率. (所有人按照编号逆时 ...
随机推荐
- Android典型界面设计——ViewPage+Fragment实现区域顶部tab滑动切换
一.问题描写叙述 本系列将结合案例应用,陆续向大家介绍一些Android典型界面的设计,首先说说tab导航,导航分为一层和两层(底部区块+区域内头部导航).主要实现方案有RadioGroup+View ...
- CSDN蒋涛:我为什么和王峰一起创办极客帮天使基金?
i 黑马 记者:王静静 7月15日,i黑马在一家咖啡厅见到了CSDN创始人蒋涛,这位中国最大的程序猿社区的创始人,正在经营一份新事业,他和蓝港在线创始人王峰正式成立了天使基金"极客 ...
- 创建ORACLE JOB
oracle job简介 主要的使用情景 定时在后台执行相关操作:如每天晚上0点将一张表的数据保存到另一张表中,2:定时备份数据库等 熟化说万事开头难,这里我只简单记述一个创建一个简单的job 步骤如 ...
- 第一个c++程序 helloworld
// helloworld.cpp : 定义控制台应用程序的入口点.// #include "stdafx.h"#include "iostream" int ...
- Frogs' Neighborhood
Frogs' Neighborhood Time Limit: 5000MS Memory Limit: 10000K Total Submissions: 7920 Accepted: 33 ...
- Solr特殊字符转义处理
做站内搜索时,如果输入的参数中包含英文冒号.双引号或其他具有特殊含义的字符时,可能需要做转义来避免查不到数据的问题. 测试于:Solr 4.5.1, Jdk 1.6.0_45, Tomcat 6.0. ...
- UVa OJ 10071
Problem B Back to High School Physics Input: standard input Output: standard output A particle has i ...
- jquery.hichartTable.js插件绘图
使用场景:随日期不断增长变化的数据用折线图表现出来更加直观,比如注册人数的增长等. jquery.hichartTable.js文档:http://pmsipilot.github.io/jquery ...
- python 基础——常用功能片段
1. 元素去重 data = [1,2,3,4,4,5,5,6] res = set(data) 2. 元素去重排序 res = sorted(set(data)) 2. 打印重复的元素 res = ...
- cxGrid使用汇总1
这些都不是原创,只是平时收集到资料然后整理的,有些可能百度一下到处都是而且还大同小异也有些不是很好找,现在贴出来希望给那些用到cxGrid的人会有所帮助 1. 去掉cxGrid中台头的Box 解决:在 ...