首页 > 其他分享 >51NOD 1131 覆盖数字的数量 规律+公式

51NOD 1131 覆盖数字的数量 规律+公式

时间:2023-02-07 18:35:56浏览次数:57  
标签:10 return 51NOD 公式 1131 int 20 ll LL


1131 覆盖数字的数量

  1. 1.0 秒
  2.  
  3. 131,072.0 KB
  4.  
  5. 20 分
  6.  
  7. ​3级题​

给出一段从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。

 收起

输入


第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 1000) 第2 - T + 1行:每行4个数:A, B , X, Y,中间用空格分隔。(1 <= A < B <= 10^18, 1 <= X < Y <= 10^18)


输出


输出共T行,每行1个数,区间[X,Y]中可以由A-B中的整数相加得到的不同整数的数量。


输入样例


1 8 10 3 20


输出样例


8


 

我们知道对于[a,b],可以构造[a,b],[2*a,2*b],[3*a,3*b]........还有一个规律就是如果某处相交,则往后的数都能覆盖,比如[ka,kb][(k+1)a,(k+1)b]  如果kb>=(k+1)a,kb以后的数都能构造。

k=   a/(b-a)

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef long long ll ;
const int N=1e5+7;
int n;
LL a[N];
LL sum=0;
LL solve(ll a,ll b,ll x,ll y)
{
//cout<<a<<" "<<b<<" "<<x<<" "<<y<<endl;
if(b<x) return 0;
if(a>y) return 0;
if(a<=x&&b<=y&&b>=x)
{
return b-x+1;
}
if((a>=x&&b<=y)||(a<=x&&b>=y))
{
return b-a+1;
}
if(a>=x&&a<=y&&b>=y)
{
return y-a+1;
}
}
int main()
{
scanf("%d",&n);
while(n--)
{
LL a,b,x,y;
scanf("%lld%lld%lld%lld",&a,&b,&x,&y);

int k=a/(b-a);

if(a%(b-a)==0)
{
k++;
}
LL ans=0;
for(int i=1;i<k;i++)
{
ans+=solve(i*a,i*b,x,y);
}

printf("%lld\n",ans+solve(k*a,y,x,y));
}

return 0 ;
}

 

标签:10,return,51NOD,公式,1131,int,20,ll,LL
From: https://blog.51cto.com/u_14932227/6042623

相关文章

  • ONLYOFFICE文档​ TEXTBEFORE, TEXTAFTER, TEXTSPLIT 公式
    ​公式编辑器与常见的文字处理软件和演示程序配合使用,特别是数学编辑器已经成为当下互联网最常用的软件之一,在各种文档中加入复杂的数学公式和符号,在编辑试卷、书籍等途径上......
  • Gabor公式
    TheearlierlayersofCNNsaresimilartoGaborfilters[1],[29].[1]A.Krizhevsky,I.Sutskever,andG.E.Hinton,“Imagenetclassificationwithdeepconvo......
  • 51NOD 1278 相离的圆(二分 + 排序 好题)
    平面上有N个圆,他们的圆心都在X轴上,给出所有圆的圆心和半径,求有多少对圆是相离的。例如:4个圆分别位于1,2,3,4的位置,半径分别为1,1,2,1,那么{1,2},{1,3}{2,3}{2,4......
  • 51nod 2484 小b和排序(DP)
    小b有两个长度都为n的序列A,B。现在她需要选择一些i,然后交换A[i]和B[i],使得A和B都变成严格递增的序列。你能帮小b求出最少交换次数吗?输入保证有解。 收起输入第一行输入一......
  • 51nod 1428活动安排问题
    有若干个活动,第i个开始时间和结束时间是[Si,fi),同一个教室安排的活动之间不能交叠,求要安排所有活动,最少需要几个教室?  收起输入第一行一个正整数n(n<=10000)代表活动......
  • 51nod 1138 连续整数的和 好题
    给出一个正整数N,将N写为若干个连续数字和的形式(长度>=2)。例如N=15,可以写为1+2+3+4+5,也可以写为4+5+6,或7+8。如果不能写为若干个连续整数的和,则输出NoS......
  • 51nod 1095 Anigram单词
    1095Anigram单词一个单词a如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的Anigram,例如单词army和mary互为Anigram。另:相同的2个单词不算Anigram。现在给定......
  • 51nod 1133 不重叠的线段
    X轴上有N条线段,每条线段有1个起点S和终点E。最多能够选出多少条互不重叠的线段。(注:起点或终点重叠,不算重叠)。例如:[15][23][36],可以选[23][36],这2条线段互不重叠。 收......
  • 51Nod 1050 循环数组最大子段和
    N个整数组成的循环序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续的子段和的最大值(循环序列是指n个数围成一个圈,因此需要考虑a[n-1],a[n],a[1],a[2]这样的......
  • C# 动态计算用户输入的公式字符串 MathParser.org-mXparser
      1、下载MathParser.org-mXparser dll包dotnetaddpackageMathParser.org-mXparser--version5.2.02、引入dllusingorg.mariuszgromada.math.mxparser;3、测试de......