• 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;
    }



  • 相关阅读:
    Python MySQL(SQL语句的补充3)
    Python MySQL(pymysql的使用day1)
    Python MySQL(SQL语句的补充2)
    Python MySQL(对外键使用方法的补充)
    Python MySQL(学习SQL语句)
    Python MySQL数据库的基本使用
    关于http响应内容压缩的一点小积累。
    同一账号,后一用户登录,前一个用户则被踢掉
    对序列化的学习。
    MySQL 函数积累
  • 原文地址:https://www.cnblogs.com/staginner/p/2281371.html
Copyright © 2020-2023  润新知