題目鏈接:http://poj.org/problem?id=3175
題目大意:給一個數n ,然後給出一個n位數,代表一個數開方都的前n位小數部分,求出開方之前的數;
思路:x開放後小數部分爲k.123,那k.123的平方<x,k.124的平方一定大於x;
所以只需枚舉 long long int (k.123)*(k.123)+1<k.124*k.124就可以求出答案;
代碼如下:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
int n;
double x;
scanf("%d%lf",&n,&x);
double t=1.0;
for( int i=0;i<n;i++)
t/=10.0;
x*=t;
for(int i=1;;i++)
{
double y=(long long )((x+i)*(x+i))+1;
double yy=(x+i+t)*(x+i+t);
if(yy>y)
{
printf("%lld",(long long )y);
break;
}
}
}