hdu 6216 A Cubic number and A Cubic Number
Posted 不搞事情和咸鱼有什么区别
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 6216 A Cubic number and A Cubic Number相关的知识,希望对你有一定的参考价值。
题意:给定一个素数,判定它是不是两个立方数之差。
题解:对于a^3+b^3=(a-b)(a^2-a*b+b^2),而一个素数的因子只有1和其本身,在加上(a^2-a*b+b^2)一定是大于1的,所以只有(a-b)为1的时候,才可能为解。预处理一下,打个表就好了。
ac代码:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long ll; ll ans[800000]; int mycheck(int l,int r,ll key) { while(r-l>10) { int mid=(l+r)/2; if(ans[mid] > key) { r=mid-1; } else if(ans[mid] < key) l=mid+1; else return 1; } // cout<<l<<‘ ‘<<r<<endl; for(int i=l;i<=r;i++) if(ans[i]==key) return 1; return -1; } int main() { int t; for(ll i=2;i<=800000;i++) { ans[i-1]=i*i*i-(i-1)*(i-1)*(i-1); // if(i<=10) cout<<ans[i-1]<<endl; } //cout<<ans[800000-1]<<endl; cin>>t; while(t--) { ll n; scanf("%lld",&n); int pos=mycheck(1,800000,n); if(pos==1) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }
以上是关于hdu 6216 A Cubic number and A Cubic Number的主要内容,如果未能解决你的问题,请参考以下文章
HDU 6216 A Cubic number and A Cubic Number数学思维+枚举/二分
hdu 6216 A Cubic number and A Cubic Number
HDU 6216 A Cubic number and A Cubic Number(数学/二分查找)
HDU6216 A Cubic number and A Cubic Number 和 广工的加强版
2017 ACM/ICPC Asia Regional Qingdao Online 1011 A Cubic number and A Cubic Number
2017 ACM/ICPC Asia Regional Qingdao Online - 1011 A Cubic number and A Cubic Number