有一个正整数x,她可以进行任意次操作,每次将x 加上 2,或者将x 减去 2。
现在想知道,如果将x 变为完全平方数,最少需要多少次操作呢,请你输出答案。
输入
输入包含一行一个正整数x,(1≤x≤10^12 )。
输出
输出包含一行,表示最少的操作次数
样例
输入
5
输出
2
提示
可以进行两次 "+2" 操作,变为 9,是完全平方数。 也可以进行两次 "-2" 操作,变为 1,也是完全平方数。
———————————————————————————————————————————代码:
#include<bits/stdc++.h>
using namespace std;
int x;
int main()
{
cin>>x;
int a=sqrt(x);
int b=a+1;
int a2=a*a;
int b2=b*b;
int a3=abs(a2-x);
int b3=abs(b2-x);
if(a3%2==0&&b3%2==0)
printf("%d",min(a3/2,b3/2));
else
{
if(a3%2==0)
printf("%d",a3/2);
else
printf("%d",b3/2);
}
return 0;
}