1. 程式人生 > 遊戲資訊 >千年千巖、藏石巖者任務的收集物點位攻略

千年千巖、藏石巖者任務的收集物點位攻略

Problem Detail - H:.完全平方數 - 追夢演算法網

題意就是給你一個數n,要求最小的數x使得n*x是一個完全平方數

資料範圍很大,到10的12次方

#include<iostream>
#include<cmath>
using namespace std;
typedef long long int ll;
int pd(ll x)
{
    double m=sqrt(x);
    if(floor(m+0.5)==m) return 1;
    else return 0;
}
int main(){
    ll n;
    cin>>n;
    
if(pd(n)) { cout<<"1"<<endl; return 0; } ll f=0,res,minn=1e18; for(int i=2;i<=n/i;i++) { if(n%i==0) { ll x=i,y=n/i,a,b; if(x>y) a=x,b=y; else a=y,b=x; if(a%b==0) { f
=1; res=a/b; minn=min(minn,res); } } } if(f) cout<<res<<endl; else cout<<n<<endl; return 0; } /* 一個數可以分解為x*y的形式,如果x%y==0||y%x==0--->y/x,x/y; 不可以那就直接本身 如果本身是平方數那答案就是1 */