d.

  1. Jam有道数学题想向你请教一下,他刚刚学会因式分解比如说,x^2+6x+5=(x+1)(x+5)
  2. 就好像形如 ax^2+bx+c => pqx^2+(qk+mp)x+km=(px+k)(qx+m)
  3. 但是他很蠢,他只会做p,q,m,kp,q,m,k为正整数的题目
  4. 请你帮助他,问可不可以分解

题意就是问一个一元二次方程能不能进行十字相乘的分解?

s.

官方题解:第一道题比较简单,可以说是简单的模拟题,我们考虑到a,b,c都是10^9​​的,所以我们决定要把时间复杂度降下来,

对于每一个数,因为考虑到都是正数,所以我们处理起来就方便很多,打个比方32=2*16,那么枚举到2的时候就可以得出16,

这样子的话时间就变为O(√​a​​​√​b​​​),轻松解决这道题

就是枚举么,我也是这么想的。。。

当时感觉可能超时,还想到了合数分解。。。。最后也没做出来。。。真是想多了。。。

ps:如果知道下面这个的话,那么这个题就容易多了。。。

对于形如ax²+bx+c的多项式,在判定它能否使用十字分解法分解因式时,可以使用Δ=b²-4ac进行判定。当Δ为完全平方数时,可以在整数范围对该多项式进行十字相乘。

c.枚举

  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<math.h>
  4. using namespace std;
  5.  
  6. int a,b,c;
  7. int p[],cnt1;//p
  8. int k[],cnt2;//k
  9.  
  10. bool f(){
  11. cnt1=cnt2=;
  12.  
  13. int sqrt1=(int)sqrt(a);
  14. for(int i=;i<=sqrt1;++i){
  15. if(a%i==){
  16. p[cnt1++]=i;
  17. p[cnt1++]=a/i;
  18. }
  19. }
  20. int sqrt2=(int)sqrt(c);
  21. for(int i=;i<=sqrt2;++i){
  22. if(c%i==){
  23. k[cnt2++]=i;
  24. k[cnt2++]=c/i;
  25. }
  26. }
  27.  
  28. int q,m;
  29. for(int i=;i<cnt1;++i){
  30. for(int j=;j<cnt2;++j){
  31. q=a/p[i];
  32. m=c/k[j];
  33. if( q*k[j]+m*p[i]==b ){
  34. return true;
  35. }
  36. }
  37. }
  38. return false;
  39. }
  40.  
  41. int main(){
  42.  
  43. int T;
  44.  
  45. scanf("%d",&T);
  46.  
  47. while(T--){
  48. scanf("%d%d%d",&a,&b,&c);
  49.  
  50. if(f()){
  51. printf("YES\n");
  52. }
  53. else{
  54. printf("NO\n");
  55. }
  56. }
  57.  
  58. return ;
  59. }

c2.当Δ为完全平方数时,可以在整数范围对该多项式进行十字相乘。

  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<math.h>
  4. using namespace std;
  5.  
  6. int main(){
  7.  
  8. int T;
  9. __int64 a,b,c;
  10. __int64 k,m;
  11.  
  12. scanf("%d",&T);
  13.  
  14. while(T--){
  15. scanf("%I64d%I64d%I64d",&a,&b,&c);
  16. m=b*b-*a*c;
  17.  
  18. if(m<){//m不是完全平方数
  19. printf("NO\n");
  20. }
  21. else{//m>=0
  22. k=(__int64)sqrt(m);
  23. if(k*k==m){//m是完全平方数
  24. printf("YES\n");
  25. }
  26. else{//m不是完全平方数
  27. printf("NO\n");
  28. }
  29. }
  30. }
  31.  
  32. return ;
  33. }

hdu 5615 Jam's math problem(十字相乘判定)的更多相关文章

  1. HDU 5615 Jam's math problem

    Jam's math problem Problem Description Jam has a math problem. He just learned factorization.He is t ...

  2. hdu 5615 Jam's math problem(判断是否能合并多项式)

    方法一:由十字相乘相关理论我们能知道,如果要有p,k,q,m,那么首先要有解,所以b*b-4*a*c要>0,然而因为p,k,q,m是正整数,所以代表x1,x2都是有理数,有理数是什么鬼呢?就是解 ...

  3. Jam's math problem(思维)

    Jam's math problem Submit Status Practice HDU 5615   Description Jam has a math problem. He just lea ...

  4. 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 ...

  5. HDU 5055 Bob and math problem(结构体)

    主题链接:http://acm.hdu.edu.cn/showproblem.php?pid=5055 Problem Description Recently, Bob has been think ...

  6. 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 ...

  7. hdu 1757 A Simple Math Problem (乘法矩阵)

    A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  8. HDU 1757 A Simple Math Problem (矩阵快速幂)

    题目 A Simple Math Problem 解析 矩阵快速幂模板题 构造矩阵 \[\begin{bmatrix}a_0&a_1&a_2&a_3&a_4&a ...

  9. HDU 1757 A Simple Math Problem(矩阵)

    A Simple Math Problem [题目链接]A Simple Math Problem [题目类型]矩阵快速幂 &题解: 这是一个模板题,也算是入门了吧. 推荐一个博客:点这里 跟 ...

随机推荐

  1. 开始学习Objective-C

        加油!     顺便试试这MarsEdit好用不~

  2. electron 自定义菜单

    快捷键:http://electronjs.org/docs/api/accelerator

  3. java 常用的解析工具

    这里介绍两种 java 解析工具. 第一种:java 解析 html 工具 jsoup 第二种: java 解析 XML 工具 Dom4j jsoup jsoup是一个用于处理真实HTML的Java库 ...

  4. Wormholes(spfa判负环)

      POJ - 3259—— Wormholes Time Limit: 2000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & % ...

  5. python文件追加及时间获取

    一.python:文件的读取.创建.追加.删除.清空 2011-10-24 11:36:35|  分类: python |举报 |字号 订阅   一.用Python创建一个新文件,内容是从0到9的整数 ...

  6. noip 2013 luogu P1969 积木大赛

    题目描述 春春幼儿园举办了一年一度的“积木大赛”.今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第i块积木的最终高度需要是hi. 在搭建开始之前,没有任何积木(可以看成 ...

  7. springboot整合mybatis+jetty笔记以及遇到的问题

    图文创建一个springboot Demo(IDEA创建)+目录图+返回json springboot创建参考 pom.xml <dependencies> <!--<depe ...

  8. js dom 的常用属性和方法

    1.对象集合:      (1).all[];      (2).images[];      (3).anchors[];      (4).forms[];      (5).links[];   ...

  9. ASP.NET Core 如何记录每次请求的Request信息 - sky 胡萝卜星星 - CSDN博客

    原文:ASP.NET Core 如何记录每次请求的Request信息 - sky 胡萝卜星星 - CSDN博客 版权声明:本文为starfd原创文章,转载请标明出处. https://blog.csd ...

  10. linux驱动开发流程

    嵌入式linux驱动开发流程嵌入式系统中,操作系统是通过各种驱动程序来驾驭硬件设备的.设备驱动程序是操作系统内核和硬件设备之间的接口,它为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个 ...