HDU-6216 A Cubic number and A Cubic Number

来源:互联网 发布:80端口入侵 编辑:程序博客网 时间:2024/06/10 20:33

题目链接:A Cubic number and A Cubic Number

题目大概意思是给你一个素数p,判断这个数是不是两个数a和b的立方差,根据立方差公式得p=(a-b)(a^2+a*b+b^2),素数是只能被一和自身整除的数,这里显然有a-b=1,a^2+a*b+b^2=p,带入消元有3*b^3+3*b+1=p,现在就是判断有没有这样的整数符合条件,为了消除误差带来的影响,用循环来筛选出这个数,循环的起点数是这个方程的正数解向下取整

AC代码:

#include<iostream>#include<cmath>using namespace std;int main(){int num;cin >> num;long long a, b;while (num--){cin >> a;b = ((-3.0 + sqrt(-3.0 + (double)a*12.0)) / 6.0);while ((b*b * 3 + 3 * b + 1) <= a){if (b*b * 3 + 3 * b + 1 == a){cout << "YES" << endl;break;}else b++;}if ((b*b * 3 + 3 * b + 1) > a)cout << "NO" << endl;}}


原创粉丝点击