51nod 1132 覆盖数字的数量 V2
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1132
题意是给定a,b,l,r求[l,r]内有几个整数可以表示成ax+by(x,y为非负整数)。
直接算l<=ax+by<=r会重复计算一个数的多种表示方法,而两种表示方法(x,y)总是相差k*(b/gcd(a,b),-a/gcd(a,b)),因此可以限制y取最小值进行去重
即x>=0,y>=0,l<=ax+by<=r,y<a/gcd(a,b)五个半平面的交的整点个数,可以分类一下然后用类欧几里德算法计算。
#include<stdio.h>
typedef __int128 i64;
i64 f(i64 a,i64 b,i64 c,i64 n){
if(!a||n<)return ;
i64 s=;
if(a>=c)s+=a/c*(n+)*n/,a%=c;
if(b>=c)s+=b/c*(n+),b%=c;
i64 m=(a*n+b)/c;
return s+n*m-f(c,c-b-,a,m-);
}
i64 gcd(i64 a,i64 b){
for(i64 c;b;c=a,a=b,b=c%b);
return a;
}
i64 g(i64 a,i64 b,i64 c){
c+=b;
return f(a,c%a,b,c/a);
}
i64 cal(i64 a,i64 b,i64 c){
i64 z=a/gcd(a,b)-;
if(b*z>c)return g(a,b,c);
i64 p=(c-b*z)/a+;
return p*(z+)+g(a,b,c-a*p);
}
int main(){
int T;
long long a,b,x,y;
for(scanf("%d",&T);T;--T){
scanf("%lld%lld%lld%lld",&a,&b,&x,&y);
i64 ans=cal(a,b,y)-cal(a,b,x-);
int ss[],sp=;
do ss[++sp]=ans%+;while(ans/=);
while(sp)putchar(ss[sp--]);
putchar();
}
return ;
}
51nod 1132 覆盖数字的数量 V2的更多相关文章
- 51nod-1131: 覆盖数字的数量
[传送门:51nod-1131] 简要题意: 给出A,B,表示有一个区间为A到B 给出X,Y,表示有一个区间为X到Y 求出X到Y中能够被A到B中的数(可重复)相加得到的不同的数的个数 题解: 乱搞题, ...
- 51nod 1770 数数字
1770 数数字 基准时间限制:1 秒 空间限制:262144 KB 分值: 20 难度:3级算法题 收藏 关注 统计一下 aaa ⋯ aaan个a × b 的结果里面 ...
- 51nod 1009:数字1的数量
1009 数字1的数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个 ...
- 51nod 1197 字符串的数量 V2(矩阵快速幂+数论?)
接上一篇,那个递推式显然可以用矩阵快速幂优化...自己随便YY了下就出来了,学了一下怎么用LaTeX画公式,LaTeX真是个好东西!嘿嘿嘿 如上图.(刚画错了一发...已更新 然后就可以过V2了 or ...
- ACM学习历程—51NOD 1770数数字(循环节)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1770 这是这次BSG白山极客挑战赛的A题.由于数字全部相同,乘上b必然会 ...
- 51Nod 1084 矩阵取数问题 V2 —— 最小费用最大流 or 多线程DP
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1084 1084 矩阵取数问题 V2 基准时间限制:2 秒 空 ...
- [51nod1197]字符串的数量 V2
用N个不同的字符(编号1 - N),组成一个字符串,有如下要求: (1) 对于编号为i的字符,如果2 * i > n,则该字符可以作为结尾字符.如果不作为结尾字符而是中间的字符,则该字符后面可以 ...
- 51nod 1061 最复杂的数V2
题目链接 51nod 1061 题面简述 求\([1, n]\)中约数个数最多的数. \(n \le 10^{200}\) 题解 首先,答案一定是一个反素数. 什么是反素数? 一个正整数\(x\)是反 ...
- 51nod 1218 最长递增子序列 V2——LIS+思路(套路)
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1218 自己怎么连这种 喜闻乐见的大水题 都做不出来了…… 好像见过 ...
随机推荐
- angular的点击添加
首先是在js里面我们可以用clone来点击添加一些东西比如列表或者其他的div之类的,但是在angular里面怎么实现点击添加呢? 类似这种: 这样就尴尬了,最少我这样的菜鸟是不知道怎么去写的,网上好 ...
- transition的用法以及animation的用法
http://www.cnblogs.com/xiaohuochai/p/5347930.html transiton: 过渡属性 过渡所需要时间 过渡动画函数 过渡延迟时间: 触发过渡 单纯的代码不 ...
- 读书笔记--More Effective C++--效率(总结)
PS: 本文只是总结,具体内容需要去查看More Effective C++--效率部分. 1. 80—20准则 大约 20%的代码使用了 80%的程序资源:大约 20%的代码耗用了大约 80%的运行 ...
- django-models层
----https://www.cnblogs.com/liuqingzheng/articles/9472723.html 一.ORM简介 查询数据层次图解:如果操作mysql,ORM是在pymys ...
- [动态差分+二维前缀和][小a的轰炸游戏]
链接:https://ac.nowcoder.com/acm/contest/317/E来源:牛客网 题目描述 小a正在玩一款即时战略游戏,现在他要用航空母舰对敌方阵地进行轰炸 地方阵地可以看做是n× ...
- linux 条件
1.文件状态测试-d 目录 -r 可读-f 常规文件 -w 可写-L 符号连接 -x 可执行-s 文件长度大于0,非空 -u 文件有suid位设置 示例: [ -s haison.c ] 0表示成功, ...
- C#模拟键盘按键的三种方式实现
1.System.Windows.Forms.SendKeys 组合键:Ctrl = ^ .Shift = + .Alt = % 模拟按键:A private void button1_Click(o ...
- Jenkins发布后自动通知【钉钉】
阅读目录 一.前言 二.使用钉钉推送的优势 三.配置 一.前言 最近使用Jenkins进行自动化部署,但是发布署后,并没有相应的通知,虽然有邮件发送通知,但是发现邮件会受限于大家接受的设置,导致不能及 ...
- 本地开发不用改hosts 也可以绑定域名开发
以往我们在开发 web 应用时,为了模拟生产环境都会修改系统中的hosts 文件,加入一个域名指向 127.0.0.1,绑定到开发目录,如下: 但是在 Chrome 中有一个域名是可以不用修改 hos ...
- day9大纲
01 作业内容回顾 函数的初识: 封装一个功能. def 函数名(): 函数体 函数的返回值:return 1,结束函数. 2,返回给执行者(函数名())值. return ----> None ...