4
9
整理可以得到:x=n+2*sqrt(ny)+y
也就是说,求一个最小的y使ny为完全平方数
暴力分解质因数即可
【代码】
#include<iostream> #include<cstring> #include<cstdio> #include<cmath> using namespace std; long long n,num,mul,ans,a,y,i; int main(){ scanf("%lld",&n); a=n,mul=1,y=1; for (i=2;i*i<=a;++i){ num=0; while (a%i==0){ num++; a/=i; } if (num%2!=0) num++,y*=i; num/=2; for (int j=1;j<=num;++j) mul*=i; } if (a!=1) mul*=a,y*=a; ans=n+2*mul+y; printf("%I64d",ans); }