hdu 5615 Jam's math problem(十字相乘判定)
d.
- Jam有道数学题想向你请教一下,他刚刚学会因式分解比如说,x^2+6x+5=(x+1)(x+5)
- 就好像形如 ax^2+bx+c => pqx^2+(qk+mp)x+km=(px+k)(qx+m)
- 但是他很蠢,他只会做p,q,m,kp,q,m,k为正整数的题目
- 请你帮助他,问可不可以分解
题意就是问一个一元二次方程能不能进行十字相乘的分解?
s.
官方题解:第一道题比较简单,可以说是简单的模拟题,我们考虑到a,b,c都是10^9的,所以我们决定要把时间复杂度降下来,
对于每一个数,因为考虑到都是正数,所以我们处理起来就方便很多,打个比方32=2*16,那么枚举到2的时候就可以得出16,
这样子的话时间就变为O(√a√b),轻松解决这道题
就是枚举么,我也是这么想的。。。
当时感觉可能超时,还想到了合数分解。。。。最后也没做出来。。。真是想多了。。。
ps:如果知道下面这个的话,那么这个题就容易多了。。。
对于形如ax²+bx+c的多项式,在判定它能否使用十字分解法分解因式时,可以使用Δ=b²-4ac进行判定。当Δ为完全平方数时,可以在整数范围对该多项式进行十字相乘。
c.枚举
- #include<iostream>
- #include<stdio.h>
- #include<math.h>
- using namespace std;
- int a,b,c;
- int p[],cnt1;//p
- int k[],cnt2;//k
- bool f(){
- cnt1=cnt2=;
- int sqrt1=(int)sqrt(a);
- for(int i=;i<=sqrt1;++i){
- if(a%i==){
- p[cnt1++]=i;
- p[cnt1++]=a/i;
- }
- }
- int sqrt2=(int)sqrt(c);
- for(int i=;i<=sqrt2;++i){
- if(c%i==){
- k[cnt2++]=i;
- k[cnt2++]=c/i;
- }
- }
- int q,m;
- for(int i=;i<cnt1;++i){
- for(int j=;j<cnt2;++j){
- q=a/p[i];
- m=c/k[j];
- if( q*k[j]+m*p[i]==b ){
- return true;
- }
- }
- }
- return false;
- }
- int main(){
- int T;
- scanf("%d",&T);
- while(T--){
- scanf("%d%d%d",&a,&b,&c);
- if(f()){
- printf("YES\n");
- }
- else{
- printf("NO\n");
- }
- }
- return ;
- }
c2.当Δ为完全平方数时,可以在整数范围对该多项式进行十字相乘。
- #include<iostream>
- #include<stdio.h>
- #include<math.h>
- using namespace std;
- int main(){
- int T;
- __int64 a,b,c;
- __int64 k,m;
- scanf("%d",&T);
- while(T--){
- scanf("%I64d%I64d%I64d",&a,&b,&c);
- m=b*b-*a*c;
- if(m<){//m不是完全平方数
- printf("NO\n");
- }
- else{//m>=0
- k=(__int64)sqrt(m);
- if(k*k==m){//m是完全平方数
- printf("YES\n");
- }
- else{//m不是完全平方数
- printf("NO\n");
- }
- }
- }
- return ;
- }
hdu 5615 Jam's math problem(十字相乘判定)的更多相关文章
- HDU 5615 Jam's math problem
Jam's math problem Problem Description Jam has a math problem. He just learned factorization.He is t ...
- hdu 5615 Jam's math problem(判断是否能合并多项式)
方法一:由十字相乘相关理论我们能知道,如果要有p,k,q,m,那么首先要有解,所以b*b-4*a*c要>0,然而因为p,k,q,m是正整数,所以代表x1,x2都是有理数,有理数是什么鬼呢?就是解 ...
- Jam's math problem(思维)
Jam's math problem Submit Status Practice HDU 5615 Description Jam has a math problem. He just lea ...
- BestCoder Round #70 Jam's math problem(hdu 5615)
Problem Description Jam has a math problem. He just learned factorization. He is trying to factorize ...
- HDU 5055 Bob and math problem(结构体)
主题链接:http://acm.hdu.edu.cn/showproblem.php?pid=5055 Problem Description Recently, Bob has been think ...
- HDU 1757 A Simple Math Problem 【矩阵经典7 构造矩阵递推式】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=1757 A Simple Math Problem Time Limit: 3000/1000 MS (J ...
- hdu 1757 A Simple Math Problem (乘法矩阵)
A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- HDU 1757 A Simple Math Problem (矩阵快速幂)
题目 A Simple Math Problem 解析 矩阵快速幂模板题 构造矩阵 \[\begin{bmatrix}a_0&a_1&a_2&a_3&a_4&a ...
- HDU 1757 A Simple Math Problem(矩阵)
A Simple Math Problem [题目链接]A Simple Math Problem [题目类型]矩阵快速幂 &题解: 这是一个模板题,也算是入门了吧. 推荐一个博客:点这里 跟 ...
随机推荐
- 开始学习Objective-C
加油! 顺便试试这MarsEdit好用不~
- electron 自定义菜单
快捷键:http://electronjs.org/docs/api/accelerator
- java 常用的解析工具
这里介绍两种 java 解析工具. 第一种:java 解析 html 工具 jsoup 第二种: java 解析 XML 工具 Dom4j jsoup jsoup是一个用于处理真实HTML的Java库 ...
- Wormholes(spfa判负环)
POJ - 3259—— Wormholes Time Limit: 2000MS Memory Limit: 65536KB 64bit IO Format: %I64d & % ...
- python文件追加及时间获取
一.python:文件的读取.创建.追加.删除.清空 2011-10-24 11:36:35| 分类: python |举报 |字号 订阅 一.用Python创建一个新文件,内容是从0到9的整数 ...
- noip 2013 luogu P1969 积木大赛
题目描述 春春幼儿园举办了一年一度的“积木大赛”.今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第i块积木的最终高度需要是hi. 在搭建开始之前,没有任何积木(可以看成 ...
- springboot整合mybatis+jetty笔记以及遇到的问题
图文创建一个springboot Demo(IDEA创建)+目录图+返回json springboot创建参考 pom.xml <dependencies> <!--<depe ...
- js dom 的常用属性和方法
1.对象集合: (1).all[]; (2).images[]; (3).anchors[]; (4).forms[]; (5).links[]; ...
- ASP.NET Core 如何记录每次请求的Request信息 - sky 胡萝卜星星 - CSDN博客
原文:ASP.NET Core 如何记录每次请求的Request信息 - sky 胡萝卜星星 - CSDN博客 版权声明:本文为starfd原创文章,转载请标明出处. https://blog.csd ...
- linux驱动开发流程
嵌入式linux驱动开发流程嵌入式系统中,操作系统是通过各种驱动程序来驾驭硬件设备的.设备驱动程序是操作系统内核和硬件设备之间的接口,它为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个 ...