http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1131

1131 覆盖数字的数量

基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题
收藏
关注
给出一段从A - B的区间S(A,B为整数),这段区间内的整数可以随便使用任意次。再给出一段从X - Y的区间T,问用区间S中的整数做加法,可以覆盖区间T中多少个不同的整数。

例如:区间S为8 - 10,区间T为3 - 20。在3 - 20中,整数8(8),9(9),10(10),16(8+8),17(8+9),18(9+9),19(9+10),20(10+10)。可以被区间S中的数覆盖,因此输出8。
Input
第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 1000)
第2 - T + 1行:每行4个数:A, B , X, Y,中间用空格分隔。(1 <= A < B <= 10^18, 1 <= X < Y <= 10^18)
Output
输出共T行,每行1个数,区间[X,Y]中可以由A-B中的整数相加得到的不同整数的数量。
Input示例
1
8 10 3 20
Output示例
8
首先要知道,[A,B]所能覆盖的区间是[k*A,k*B],这段区间一直往下走的话总会出现第一次重叠的地方,这时k*A之后的所有数字都可以表示出来了,因为所有的区间都将出现重叠。
证明如下,假设第一次出现重叠是[k*A,k*B],[(k+1)*A,(k+1)*B], 那么有k*A+A<=k*B, ==> k*A+A*2<=k*B+A<=k*B+B ==> (k+2)*A<=(k+1)*B , 显然之后的区间也会重叠。
然后暴力找找,重复时加一下break就好了。 虽然过了但我感觉还是可以卡的如果想的话,比如这组数据
100000000(A) 100000001(B) 1000000000000000000(X) 1000000000000000001(Y) 本机要跑300+ms,如果很多组这个的话肯定T了
 #include<bits/stdc++.h>
using namespace std;
#define LL long long
int main()
{
LL A,B,X,Y;
int T,i,j;
cin>>T;
while(T--){
LL res=;
scanf("%lld%lld%lld%lld",&A,&B,&X,&Y);
for(i=;;i++)
{
if(i*A>Y)break;
if((i+)*A<=i*B){
if(i*A<=X) res=Y-X+;
else res+=Y-i*A+;
break;
}
else{
if(i*A>=X&&i*B<=Y) res+=i*B-i*A+;
else if(i*B>=X) res+=i*B-X+;
else if(i*A<=Y) res+=Y-i*A+;
}
}
printf("%lld\n",res);
}
return ;
}

51nod 1131 数列的更多相关文章

  1. 51Nod——T 1242 斐波那契数列的第N项

    https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1242 基准时间限制:1 秒 空间限制:131072 KB 分值: 0  ...

  2. 斐波那契数列 51nod

    1242 斐波那契数列的第N项 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 斐波那契数列的定义如下:   F(0) = 0 F(1) = 1 F(n) ...

  3. (矩阵快速幂)51NOD 1242斐波那契数列的第N项

    斐波那契数列的定义如下:   F(0) = 0 F(1) = 1 F(n) = F(n - 1) + F(n - 2) (n >= 2)   (1, 1, 2, 3, 5, 8, 13, 21, ...

  4. 51nod 1242 斐波那契数列的第N项

    之前一直没敢做矩阵一类的题目 其实还好吧 推荐看一下 : http://www.cnblogs.com/SYCstudio/p/7211050.html 但是后面的斐波那契 推导不是很懂  前面讲的挺 ...

  5. 51Nod 1242 斐波那契数列的第N项(矩阵快速幂)

    #include <iostream> #include <algorithm> using namespace std; typedef long long LL; ; ; ...

  6. 51nod 1242 斐波那契数列的第N项——数学、矩阵快速幂

    普通算法肯定T了,所以怎么算呢?和矩阵有啥关系呢? 打数学符号太费时,就手写了: 所以求Fib(n)就是求矩阵  |  1  1  |n-1  第一行第一列的元素. |  1  0  | 其实学过线代 ...

  7. bzoj2431:[HAOI2009]逆序对数列

    单组数据比51nod的那道题还弱...而且连优化都不用了.. #include<cstdio> #include<cstring> #include<cctype> ...

  8. 51nod水题记

    妈呀51nod已经刷不动了又开始跟bzoj一样总是得看题解了...那么发一下总结吧... 1051:最大子矩阵 #include<cstdio> #include<cstring&g ...

  9. 51NOD 算法马拉松8

    题目戳这里:51NOD算法马拉松8 某天晚上kpm在玩OSU!之余让我看一下B题...然后我就被坑进了51Nod... A.还是01串 水题..怎么乱写应该都可以.记个前缀和然后枚举就行了.时间复杂度 ...

随机推荐

  1. 洛谷 P4768 [NOI2018]归程

    洛谷 361行代码的由来 数据分治大发好啊- NOI的签到题,可怜我在家打了一下午才搞了80分. 正解应该是kruskal重构树或排序+可持久化并查集. 我就分点来讲暴力80分做法吧(毕竟正解我也没太 ...

  2. 小程序 欢迎页面 navigateTo和tabBar不能同时指向一个路径

    小程序navigateTo和tabBar不能同时指向一个路径 wx.navigateTo和wx.redirectTo不允许跳转到tabBar页面,只能用wx.switchTab跳转到tabBar页面. ...

  3. 从SignalTap II中获取“最真实”的仿真测试向量(ZZ)

         在实际工作中,经常会遇到这样的情况:在硬件调试中采用SignalTap II反复多次编译并最终捕获到问题的原因时,才会发现,原来这个问题是逻辑问题,是可以在仿真环境下发现并快速解决的.先前没 ...

  4. Python之正则表达式与常用模块(Day19)

    一.正则表达式:匹配字符串的一种规则 正则表达式的在线测试工具: http://tool.chinaz.com/regex/ 字符组: 正则 待匹配字符 匹配结果 说明 [0123456789] 8 ...

  5. Python操作SQLAlchemy

    Mysql环境: MySQL 一.概述什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 什么是 MySQL.Oracle.SQLite.Access.MS ...

  6. PAT 天梯赛 L1-009. N个数求和 【模拟】

    题目链接 https://www.patest.cn/contests/gplt/L1-009 思路 每一步每一步 往上加,但是要考虑 溢出,所以用 LONG LONG 而且 每一步 都要约分 才能保 ...

  7. JQuery Div层滚动条控制(模拟横向滚动条在最顶端显示)

    想让DIV层滚动条显示在顶端,CSS样式没找到相关属性,于是用2个DIV层来模拟做了一个.经测试IE浏览器上显示并不太美观!不知道是否还有更好的办法可以实现这功能呢?   aaaaaaasssssss ...

  8. $《第一行代码:Android》读书笔记——第6章 数据持久化

    主要讲述了Android数据持久化的三种方式:文件存储.SharedPreference存储.SQLite数据库存储. (一)文件存储 其实Android中文件存储方式和Java的文件操作类似,就是用 ...

  9. perspective 能玩点什么

    今天看又在看张鑫旭的博客,本来是在玩 transform:Matrix() 的,有讲到单个变化的矩阵设置,但多个变化的就不是那么回事了. 不过这都不是事啦,人生嘛,显然总会有些难关不是轻易能过去的,反 ...

  10. LVS/NAT 配置

    LVS/NAT 配置 实验环境 三台主机:Linux Centos 6.4 32位 调度器Director:192.168.1.160(内网IP).192.168.2.20(公网IP) HTTP真实服 ...