zoukankan      html  css  js  c++  java
  • Hdu 4143


    题目链接

    好久没有在Hdu水题了,于是乎在无聊之际还是找了一道水题,

    但是看完题目之后,明显是个数学题,我还是感觉有点打触的。

    因为一直对数学题没有多大信心。


    分析了一下,Y^2 = X^2 + n 可以转化为 Y^2 = (X + a)^2

    所以:n = a^2 + 2 * a * X , 而且 X > 0

    所以 0 < a <= sqrt(n + 1) - 1

    由于要求的是最小的 X, 所以只要逆序枚举 a 就可以了,

    这里复杂度为 O(sqrt(n)), 所以可解。


    附上代码:


     1 #include <cmath>
     2 #include <cstdio>
     3 
     4 typedef long long LL;
     5 #define min(x, y) ((x) < (y) ? (x) : (y))
     6 
     7 int main() {
     8     int T, n;
     9     scanf("%d", &T);
    10     while (T--) {
    11         scanf("%d", &n);
    12 
    13         int ans = -1; 
    14 
    15         int k = int(sqrt(n + 1.0)) - 1;
    16         for (int i = k; i > 0; i--) {
    17             long long tmp = n - (long long)i * i;
    18             if (tmp % (2 * i))
    19                 continue;
    20             else {
    21                 if (ans == -1) 
    22                     ans = tmp / (2 * i);
    23                 else
    24                     ans = min(ans, tmp / (2 * i));
    25                 break;
    26             }
    27         }
    28         printf("%d
    ", ans);
    29     }
    30 
    31     return 0;
    32 }
  • 相关阅读:
    Django 【第十二篇】Form组件进阶
    Django 【第十一篇】Form组件基础
    前端知识点总结
    vue组件续和前端工程化
    vue组件
    Vue视图下
    Vue实例与渲染
    BootStrap
    jQuery事件与动画
    dom操作 属性操作 样式操作
  • 原文地址:https://www.cnblogs.com/Stomach-ache/p/3703253.html
Copyright © 2011-2022 走看看