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 ...
随机推荐
- Win7安装解压版MySQL
1.下载MySQL 访问https://dev.mysql.com/downloads/mysql/5.6.html#downloads,下载操作系统对应的版本(无账号需先注册一个),以mysql-5 ...
- STM32中断系统
1.中断介绍: 1.1 中断概念 CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂 时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序 或中断处理程 ...
- C语言程序设计100例之(6):数字反转
例6 数字反转 题目描述 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2). 输入格式 ...
- centos6的JDK安装
1. 通过如下命令查看当前操作系统是否存在JDK rpm -qa | grep java 如果出现以下内容说明你的操作系统存在jdk 2.那么依次通过如下命令进行删除它 rpm -e - -nodep ...
- Git: Setup a remote Git repository
o setup a folder on a server which service for remote Git repository, apply the following steps: Cre ...
- java架构之路(MQ专题)kafka集群配置和简单使用
前面我们说了RabbitMQ和RocketMQ的安装和简单的使用,这次我们说一下Kafka的安装配置,后面我会用几个真实案例来说一下MQ的真实使用场景.天冷了,不愿意伸手,最近没怎么写博客了,还请见谅 ...
- 4. 彤哥说netty系列之Java NIO实现群聊(自己跟自己聊上瘾了)
你好,我是彤哥,本篇是netty系列的第四篇. 欢迎来我的公从号彤哥读源码系统地学习源码&架构的知识. 简介 上一章我们一起学习了Java中的BIO/NIO/AIO的故事,本章将带着大家一起使 ...
- [Error]使用了未经检查或不安全的操作...
编译错误注: MethodReflect.java使用了未经检查或不安全的操作.注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译. 解决:在类前面加入下面一句解决 @Suppr ...
- Fedora27(CentOS7)快捷键
设置快捷键参考文档https://jingyan.baidu.com/article/f7ff0bfc1e2a322e26bb13d5.html Termial: 启动新的Terminal 需要自己 ...
- 20191031-5 beta week 1/2 Scrum立会报告+燃尽图 03
此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/9913 一.小组情况 队名:扛把子 组长:孙晓宇 组员:宋晓丽 梁梦瑶 韩昊 ...