CCPC-Wannafly Winter Camp Day7 D---二次函数【数论】【构造】

题意:
有三个二次函数,分别是$x^2 + a_1x + b_1$, $x^2 + a_2x + b_2$, $x^2 + a_3x + b_3$
现在要找三个整数$x_1, x_2, x_3$, 使得三个函数值中至少有两个相等。
思路:
主要的难点是要找三个整数。
Camp时候洪老师说的平移啥啥的,理解不了......
看了网上另一个题解的思路。
假设两个二次函数相等的函数值是$y$, 并假设是第一个和第二个相等
那么我们可以知道$x_1 =- \frac{a_1 + \sqrt{a_1^2 - 4(b_1 - y)}}{2}, x_2 =- \frac{a_2 + \sqrt{a_2^2 - 4(b_2 - y)}}{2}$
令$T^2 = a_1^2 - 4(b_1 - y), t^2 = a_2^2 - 4(b_2 - y)$
可以得到$T^2 - t^2 = a_1^2 - 4b_1 - a_2^2 + 4b_2 = (T+t)(T-t)$
于是我们进行因式分解,枚举$T^2-t^2$的因子,判断得到的$x_1, x_2$是否为整数。
对于$T^2-t^2$为0和1时进行特判就行了。
对于每一对$a$和$b$,判断是否有这样两个整数解。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#include<stack>
#include<set>
#include<vector>
#include<cmath> using namespace std;
typedef long long LL; LL a[], b[];
int t;
LL ans1, ans2; bool solve(LL a1, LL b1, LL a2, LL b2)
{
int sub = abs(a1 * a1 - * b1 - a2 * a2 + * b2);
if(sub == ){
if((a1 - a2) % == ){
ans1 = ;
ans2 = (a1 - a2) / ;
return true;
}
else return false;
}
else if(sub == ){
if(a1 % != a2 % ){
if(a1 * a1 - * b1 > a2 * a2 - * b2 && a1 % ){
ans1 = ( - a1) / ;
ans2 = -a2 / ;
return true;
}
else if(a1 * a1 - * b1 < a2 * a2 - * b2 && a2 % ){
ans2 = ( - a2) / ;
ans1 = -a1 / ;
return true;
}
else return false;
}
return false;
}
else{
for(int i = ; i * i < sub; i++){
if(!(sub % i) && !((sub / i + i) % ) && !((i - sub / i) % )){
LL T = (sub / i + i) / ;
LL t = (i - sub / i) / ;
if(a1 * a1 - * b1 < a2 * a2 - * b2)swap(T, t);
if(!((T + a1) % ) && !((t + a2) % )){
ans1 = -(a1 + T) / ;
ans2 = -(a2 + t) / ;
return true;
}
}
}
return false;
}
} void work()
{
for(int i = ; i < ; i++){
for(int j = i + ; j < ; j++){
if(solve(a[i], b[i], a[j], b[j])){
if(i == )
{
printf("%lld %lld %lld\n", ans1, j == ?ans2:, j==?:ans2);
//return;
}
else{
printf("0 %lld %lld\n", ans1, ans2);
//return ;
}
return;
}
}
}
} int main()
{
scanf("%d", &t);
while(t--){
for(int i = ; i < ; i++){
scanf("%lld%lld", &a[i], &b[i]);
}
work();
} return ;
}
CCPC-Wannafly Winter Camp Day7 D---二次函数【数论】【构造】的更多相关文章
- 2020 CCPC Wannafly Winter Camp Day1 C. 染色图
2020 CCPC Wannafly Winter Camp Day1 C. 染色图 定义一张无向图 G=⟨V,E⟩ 是 k 可染色的当且仅当存在函数 f:V↦{1,2,⋯,k} 满足对于 G 中的任 ...
- CCPC Wannafly Winter Camp Div2 部分题解
Day 1, Div 2, Prob. B - 吃豆豆 题目大意 wls有一个\(n\)行\(m\)列的棋盘,对于第\(i\)行第\(j\)列的格子,每过\(T[i][j]\)秒会在上面出现一个糖果, ...
- 2020 CCPC Wannafly Winter Camp Day1 Div.1& F
#include<bits/stdc++.h> #define forn(i, n) for (int i = 0; i < int(n); i++) #define fore(i, ...
- 2020 CCPC Wannafly Winter Camp Day1 - I. K小数查询(分块)
题目链接:K小数查询 题意:给你一个长度为$n$序列$A$,有$m$个操作,操作分为两种: 输入$x,y,c$,表示对$i\in[x,y] $,令$A_{i}=min(A_{i},c)$ 输入$x,y ...
- 2020 CCPC Wannafly Winter Camp Day2-K-破忒头的匿名信
题目传送门 sol:先通过AC自动机构建字典,用$dp[i]$表示长串前$i$位的最小代价,若有一个单词$s$是长串的前$i$项的后缀,那么可以用$dp[i - len(s)] + val(s)$转移 ...
- 2020 CCPC Wannafly Winter Camp Day1-F-乘法
题目传送门 sol:二分答案$K$,算大于$K$的乘积有多少个.关键在于怎么算这个个数,官方题解上给出的复杂度是$O(nlogn)$,那么计算个数的复杂度是$O(n)$的.感觉写着有点困难,自己写了一 ...
- 2019 wannafly winter camp
2019 wannafly winter camp Name Rank Solved A B C D E F G H I J K day1 9 5/11 O O O O O day2 5 3/11 O ...
- 2019 wannafly winter camp day 3
2019 wannafly winter camp day 3 J 操作S等价于将S串取反,然后依次遍历取反后的串,每次加入新字符a,当前的串是T,那么这次操作之后的串就是TaT.这是第一次转化. 涉 ...
- 线段树优化建图(cf787d, 2019Wannafly Winter Camp Day7 Div1 E)
线段树优化建图,用于区间到区间建边时降低空间复杂度 建立两颗线段树,一颗in, 代表进入这个区间,一颗out,代表从这个区间出去 in树从父亲向儿子建边,代表宏观进入整个区间,不向下寻找 out树从儿 ...
随机推荐
- android 制作9.png图
9.png图片与.png图片的具体不同之处.9.png图片的四周与普通的png图片相比多了一个像素位的白色区域,该区域只有在图片被还原和制造的时候才能看到,当打包后无法看见,并且图片的总像素会缩小2个 ...
- Database数据库切片模式
数据库切片模式关注的实现水平伸缩.切分是从单个数据库到平分数据访问两个或更多数据库切片.每个切片有和原始数据库相同的Schema.大多数据分布在每个切片每一行.从切片合并起来的数据和原始数据库一样.切 ...
- MacOS安装react。问题 -- npm全局包的权限问题
网上的教程有好多,在这里不一一列举,我只介绍我今天安装成功的步骤 首先,在安装react之前要先配置好node 1.安装node 在这里下载node的安装包https://nodejs.org/en/ ...
- 译:6.RabbitMQ Java Client 之 Remote procedure call (RPC,远程过程调用)
在 译:2. RabbitMQ 之Work Queues (工作队列) 我们学习了如何使用工作队列在多个工作人员之间分配耗时的任务. 但是如果我们需要在远程计算机上运行一个函数并等待结果呢?嗯,这 ...
- 【iCore4 双核心板_ARM】例程一:ARM驱动三色LED
实验原理: 通过STM32的三个GPIO驱动一个三色LED,引脚PB2接红色LED(ARM_LEDR), 引脚PA9接蓝色LED(ARM_LEDB),引脚PA10接绿色LED(ARM_LEDG), ...
- 基于Extjs 4.2的通用权限管理系统,通用后台模板,EF+MVC+Extjs 4.2
基于Extjs 4.2的通用权限管理系统,通用后台. 我们的宗旨:珍爱生命,拒绝重复!Don't Repeat Yourself!!! 本案例采用EntityFramework+MVC4.0+Extj ...
- CSS实现响应式全屏背景图
body { /* 加载背景图 */ background-image: url(images/background-photo.jpg); /* 背景图垂直.水平均居中 */ background- ...
- 简单网络搭建与测试 mininet
简介 本实验是基于pox搭建简单的网络并测试网络的连通性,利用mininet代码创建一个交换机四个主机的拓扑,测试各主机之间的连通性以及h1.h4之间的带宽. 代码 实验代码如下所示,SingleSw ...
- R语言reads.table 自动将字符串变成了逻辑值
今天遇到了一个问题,文件中有一列的值为全为F, 用read.table 读取的时候,自动将F 变成了false 对于这样的转换,可以通过 colClass 参数控制 colClass 参数指定每一列的 ...
- Scala学习笔记(六):本地函数、头等函数、占位符和部分应用函数
本地函数 可以在方法内定义方法,这种方法叫本地函数,本地函数可以直接访问父函数的参数 def parent(x: Int, y: Int): Unit ={ def child(y:Int) = y ...