luogu P5596 【XR-4】题
题目背景
xht37 喜欢分块,以至于对一道不需要分块的题也要分块做。
题目描述
有一个长度为 nn 的序列,xht37 现在想分块维护它。
PinkRabbit 要求他只准将序列分成 PRPR 种长度的块。
NaCly_Fish 要求他只准将序列分成 NFNF 种长度的块。
同一个人可能会要求 xht37 多次相同的块长。
xht37 想同时满足 PinkRabbit 和 NaCly_Fish 要求,只好使用两个人都允许的长度分块。
xht37 想知道,有多少种不同的分块方案,答案对 10 ^ 9 + 7 取模。
输入格式
第一行一个正整数 nn,表示序列的长度。
第二行一个正整数 PRPR,表示 PinkRabbit 要求的分块长度的种类数。
第三行 PRPR 个正整数,表示 PinkRabbit 要求的 PRPR 种分块长度。
第四行一个正整数 NFNF,表示 NaCly_Fish 要求的分块长度的种类数。
第五行 NFNF 个正整数,表示 NaCly_Fish 要求的 NFNF 种分块长度。
输出格式
输出一行一个整数,表示不同分块方案的种类数对 10 ^ 9 + 7取模的值。
说明/提示
对于 100% 的数据,1<=a<=1e8 ,1<=b<=1e15
由上式可得(2x+2y+a)(2x−2y−a)=a^2-4b
然后设m=2x+2y+a,n=2x-2y-a可以对a^2-4b进行分类讨论
枚举n的值,判断是否满足条件
因为m>n必须成立,所以n<=sqrt(a^2-4b)
时间复杂度sqrt(a^2-4b)
#include<cmath>
#include<cstdio>
#include<iostream>
#define ll long long
#define int long long
using namespace std;
signed main(){
int a,b,ans=0;
scanf("%lld%lld",&a,&b);
if((a/2)*(a/2)==b&&!(a%2)){
puts("inf");
return 0;
}
ll k=a*a-4*b;
if(k>0){
ll k=a*a-4*b;
for(ll n=1;n*n<=k;n++){
int m=k/n;
if(k%n==0&&n+m>=2*a&&m>=n){
if((m-n)%4==0&&(n+m-2*a)%4==0){
ll x=(n+m-2*a)>>2,y=(m-n)>>2;
if(x>=0&&y>=0)ans++;
}
}
}
}
else{
ll k=4*b-a*a;
for(ll n=1;n*n<=k;n++){
int m=k/n;
if(k%n==0&&m>=n+2*a){
if((m-n-2*a)%4==0&&(n+m)%4==0){
ll x=(m-n-2*a)>>2,y=(n+m)>>2;
if(x>=0&&y>=0)ans++;
}
}
}
}
cout<<ans<<endl;
return 0;
}
luogu P5596 【XR-4】题的更多相关文章
- Luogu P2756 [网络流24题]飞行员配对方案问题_二分图匹配
二分图模板题 我用的是匈牙利 其实最大流也可以做 #include<iostream> #include<cstdio> #include<cstdlib> #in ...
- 【题解】 Luogu P4145 上帝造题的七分钟2 / 花神游历各国
原题传送门 这道题实际和GSS4是一样的,只是输入方式有点区别 GSS4传送门 这道题暴力就能过qaq(这里暴力指线段树) 数据比较水 开方修改在线段树中枚举叶节点sqrt 查询区间和线段树基本操作 ...
- Luogu 4514 上帝造题的七分钟
二维差分+树状数组. 定义差分数组$d_{i, j} = a_{i, j} + a_{i - 1, j - 1} - a_{i, j - 1} - a_{i - 1, j}$,有$a_{i, j} = ...
- 【Luogu】P2220容易题(快速幂)
这题真是“容易”.呵呵呵. 参考题解:xyz32768 代码 #include<cstdio> #include<map> #include<algorithm> ...
- [ Luogu 4626 ] 一道水题 II
\(\\\) \(Description\) 求一个能被\([1,n]\) 内所有数整除的最小数字,并对 \(100000007\) 取模 \(N\in [1,10^8]\) \(\\\) \(Sol ...
- [Luogu] P4626 一道水题 II
---恢复内容开始--- 题目描述 一天,szb 在上学的路上遇到了灰太狼. 灰太狼:帮我们做出这道题就放了你. szb:什么题? 灰太狼:求一个能被 [1,n] 内所有数整除的最小数字,并对 100 ...
- [luogu] P4514 上帝造题的七分钟 (树状数组,二维差分)
P4514 上帝造题的七分钟 题目背景 裸体就意味着身体. 题目描述 "第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a ...
- luogu P2791 幼儿园篮球题
传送门 先看我们要求的是什么,要求的期望就是总权值/总方案,总权值可以枚举进球的个数\(i\),然后就应该是\(\sum_{i=0}^{k} \binom{m}{i}\binom{n-m}{k-i}i ...
- Luogu P2756 [网络流24题]飞行员配对方案问题_二分图匹配题解
二分图模板题 我用的是匈牙利 其实最大流也可以做 #include<iostream> #include<cstdio> #include<cstdlib> #in ...
随机推荐
- 自动任务调度 - Timer
一.概述: 最近维护一个老项目,里面使用的是Timer的时间调度器,以前没接触过,对着代码鼓捣了半天,查阅了部分博客,最后总结出自己的见解,新项目一般是不会用这种老掉牙的时间调度器了,但是维护老项目还 ...
- git回退之git reset
参考 https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E9%87%8D%E7%BD%AE%E6%8F%AD%E5%AF%86 https: ...
- 领扣(LeetCode)七进制数 个人题解
给定一个整数,将其转化为7进制,并以字符串形式输出. 示例 1: 输入: 100 输出: "202" 示例 2: 输入: -7 输出: "-10" 注意: 输入 ...
- 磁盘配额管理disk quotas
条件: a.确保系统内核支持,Linux一般都支持 b.确保分区格式支持,ext2都只持! c.安装有quota软件,centos默认都有! (1)检查内核是否打开磁盘配额支持 [root@cento ...
- ubunit 16 安装pip
pip是一个用来安装和管理python包的工具.已经内置到python2.7.9和python3.4及其以上的版本里. python2.7执行: sudo apt-get install python ...
- 原生js实现简单的下拉加载
#获取当前滚动条的高度document.documentElement.scrollTop #获取当前窗口的高度 document.documentElement.clientHeight #获取当前 ...
- 在ensp上利用三层交换机实现VLAN间路由
我们在实际生活中经常要跨vlan进行通信,我们的解决办法有单臂路由,但是单臂路由存在很大的局限性,带宽,转发效率等,所以单臂路由用的就有点少,所以就有了本章节 三层交换机在原有的二层交换机的基础上,增 ...
- centos 生成网卡UUID
在Linux或CentOS中,可以通过如下命令获取网卡的uuid信息: uuidgen 网卡名07d07031-eb0f-4691-8606-befb46645433 查看网卡UUID nmcli c ...
- vim的查找功能
vim是一款强大的编辑器. 在vim下要查找字符串: 一,全匹配: 1,从上往下查找,比如“string” : /string 2,从下往上查找,比如“string” : ?string 二,模糊 ...
- 2019-11-27:kali 2019-4中文乱码解决方法
1.更换阿里源 vim /etc/apt/soul,编辑源之后,apt-get updata && apt-get upgrade && apt-get clean , ...