糯米

TI DaVinci, gstreamer, ffmpeg
随笔 - 167, 文章 - 0, 评论 - 47, 引用 - 0
数据加载中……

POJ 3175 Finding Bovine Roots 简单计算

思路:
看到这题,第一个想到的方法就是枚举 sqrt(2), sqrt(3), sqrt(4) 。。,然后sprintf出来,再比较字符串。
显然,这种方法比较低级啦。
仔细想了下,发现如果 x.123... 这个数字的平方是一个整数的话,那必然
 sqr(x.124) > ceil(sqr(x.123))  [sqr = 求平方, ceil = 向上取整]
所以,就可以从小到大枚举它的整数部分 x ,遇到第一个满足结果的 x,就是答案了。


代码 0ms AC
#include <stdio.h>
#include 
<math.h>

double A, P, B;
int L;

__inline 
double sqr(double i)
{
    
return i * i;
}


double pow_1[] = {
    
1, 1e-1, 1e-2, 1e-3, 1e-4, 1e-5, 1e-6, 1e-7, 1e-8, 1e-9, 1e-10
}
;

int main()
{
    
double i, j;
    
int d;

    freopen(
"e:\\test\\in.txt""r", stdin);

    scanf(
"%d%d"&L, &d);
    P 
= pow_1[L];
    B 
= P * d;
    
for (A = 1; ; A++{
        i 
= (__int64)sqr(A + B) + 1;
        j 
= sqr(A + B + P);
        
if (j > i)
            
break;
    }

    printf(
"%I64d\n", (__int64)i);

    
return 0;
}

posted on 2010-03-18 08:46 糯米 阅读(444) 评论(0)  编辑 收藏 引用 所属分类: POJ


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理