zoukankan      html  css  js  c++  java
  • UVA 138 Street Numbers

    UVA_138

        这个题目让我第一次过了一把打表的瘾,自从悠然告诉我真正的打表法该怎么用了以后,这是第一次实践。

        当然后来又学了一种佩尔方程解法,根据已知我们可以化简得到一个二元一次方程(2n+1)^2-8*m^2=1,然后找到基本解2n+1=3和m=1,依据递推公式找到后面的10对m、n打印出来即可。

    //打表程序
    #include<stdio.h>
    #include<string.h>
    int main()
    {
    freopen("UVA_138(1).cpp", "w", stdout);
    long long int i, j, min, mid, max;
    printf("#include<stdio.h>\n");
    printf("int main()\n");
    printf("{\n");
    for(i = 6; i <= 65918161; i ++)
    {
    min = 1;
    max = i + 1;
    for(;;)
    {
    mid = (min + max) / 2;
    if(mid == min)
    break;
    if(mid * mid * 2 > i * (i + 1))
    max = mid;
    else
    min = mid;
    }
    if(mid * mid * 2 == i * (i + 1))
    printf("\tprintf(\"%10lld%10lld\\n\");\n", mid, i);
    }
    printf("\treturn 0;\n");
    printf("}\n");
    return 0;
    }
    #include<stdio.h>
    int main()
    {
    printf(" 6 8\n");
    printf(" 35 49\n");
    printf(" 204 288\n");
    printf(" 1189 1681\n");
    printf(" 6930 9800\n");
    printf(" 40391 57121\n");
    printf(" 235416 332928\n");
    printf(" 1372105 1940449\n");
    printf(" 7997214 11309768\n");
    printf(" 46611179 65918161\n");
    return 0;
    }


    #include<stdio.h>
    #include<string.h>
    int main()
    {
    int i = 0, j, x1, y1, x, y, newx, newy;
    x = x1 = 3, y = y1 = 1;
    for(i = 0 ;i < 10; i ++)
    {
    newx = x * x1 + 8 * y * y1;
    newy = y * x1 + x * y1;
    x = newx, y = newy;
    printf("%10d%10d\n", y, (x - 1) / 2);
    }
    return 0;
    }



  • 相关阅读:
    入门训练 圆的面积
    入门训练 序列求和
    interface
    Horizon
    H903
    Sphinx Building Docs in horizon
    Cinder Columns
    DevStack添加Swift
    Murano py27和py34的兼容处理
    Murano Weekly Meeting 2015.12.01
  • 原文地址:https://www.cnblogs.com/staginner/p/2281371.html
Copyright © 2011-2022 走看看