完全平方数
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 */
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号