I - Jam's math problem
2016-07-24 15:08
351 查看
I - Jam’s math problem
Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64uSubmit
Status
Description
Jam has a math problem. He just learned factorization.
He is trying to factorize ax^2+bx+c into the form of pqx^2+(qk+mp)x+km=(px+k)(qx+m).
He could only solve the problem in which p,q,m,k are positive numbers.
Please help him determine whether the expression could be factorized with p,q,m,k being postive.
Input
The first line is a number T, means there are T(1 \leq T \leq 100 ) cases
Each case has one line,the line has 3 numbers a,b,c (1 \leq a,b,c \leq 100000000)
Output
You should output the “YES” or “NO”.
Sample Input
2
1 6 5
1 6 4
Sample Output
YES
NO
Hint
The first case turn x2+6∗x+5 into (x+1)(x+5)
题意:求二元一次方程根的个数。
思路:用图像法:当x=0时,f(x)=ax^2+bx+c=c>0,又a>0,可以简单画出图像,要满足题意需图像与x轴有交点,根据根的判别式判断,题中还有一要求,就是p,q,k,m都是整数,根据求根公式可得sqrt(b*b-4*a*c)一定要为整数。(数学公式不好打呀)
失误:第一次没有用数学方法,超时;第二次没考虑到根式必须开尽。看来数学题还是都有规律,都是特殊情况的,应该推出公式。
代码如下:
正确代码: #include<cstdio> #include<iostream> #include<cmath> using namespace std; int main() { __int64 t,a,b,c,s,ans; cin>>t; while(t--) { cin>>a>>b>>c; s=b*b-4*a*c;//有根 ans=sqrt(s);//根式开的尽 if(s>=0&&ans*ans==s) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }
超时代码:
#include<cstdio> #include<iostream> using namespace std; int main() { __int64 t,p,q,a,b,c,flag,k,m; cin>>t; while(t--) { cin>>a>>b>>c; flag=0; for(p=1;p<=a;++p) { if(a%p!=0) continue; for(k=1;k<=c;++k) { if(c%k!=0) continue; q=a/p; m=c/k; if(q*k+m*p==b) { flag=1; break; } } if(flag==1) break; } if(flag) { cout<<"YES"<<endl; } else{ cout<<"NO"<<endl; } } return 0; }
相关文章推荐
- HDU1518 Square(DFS)
- 剑指offer49--第一个不重复的字符
- 浅谈MVC框架
- 单例模式
- 编写Spark程序并提交到集群上运行
- java的内存区域与内存溢出
- Web容器与Servlet
- POJ3250——Bad Hair Day(栈的应用)
- 初识微信二次开发
- sg-uap下关于单表操作的从前台到后台的开发流程
- 如何在网页中动态显示当前时间
- C++语法 :C/C++ 内存布局详解(经典)
- POJ2403 Hay Points
- MPAndroidChart使用三之柱形图
- android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error(Sqlite code 14): Could not open database,(OS error - 13:Permission denied)
- yum方式安装MySQL
- tjut 4941
- hdu 5733 tetrahedron 求四面体内切球球心坐标及半径大小
- HDU1501 Zipper(DFS)
- 数据库系统事务隔离级别