1. 程式人生 > >hdu 6216 A Cubic number and A Cubic Number【數學】

hdu 6216 A Cubic number and A Cubic Number【數學】

eve event aps pro pan logs strong 是否 isp

hdu 6216 A Cubic number and A Cubic Number

題意:判斷一個素數是否是兩個立方數之差,就是驗差分。

題解:只有相鄰兩立方數之差才可能,,因為x^3-y^3=(x-y)(x^2+xy+y^2),看(x-y),就能很快想到不相鄰的立方數之差是不可能是素數的:),,然後把y=x+1代入,得:p=3x^2+3x+1,所以可得判斷條件為:①p-1必須能被3整除;②(p-1)/3必須能表示為兩個相鄰整數之積。

技術分享
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4
#include<algorithm> 5 #include<cmath> 6 using namespace std; 7 typedef long long ll; 8 int main(){ 9 ll p ,t, i, j; 10 scanf("%lld", &t); 11 while(t--) { 12 scanf("%lld", &p); 13 i = sqrt((p-1)/3); 14 if((p-1)%3==0 && i*(i+1
)==(p-1)/3) puts("YES"); 15 else puts("NO"); 16 } 17 return 0; 18 }
0ms

hdu 6216 A Cubic number and A Cubic Number【數學】