• #2028 Lowest Common Multiple Plus


    http://acm.hdu.edu.cn/showproblem.php?pid=2028

    应该是比较简单的一道题啊。。。求输入的数的最小公倍数。

    先用百度来的(老师教的已经不知道跑哪去了)辗转相除法求出两数的最大公因数,再将两数相乘并除以最大公因数即得到最小公倍数。

    一开始我写的代码如下

     1 #include<stdio.h>
     2 
     3 int gcd(int a, int b)
     4 {
     5     if (b == 0)
     6     {
     7         return a;
     8     }
     9     return gcd(b, a%b);
    10 }
    11 int main()
    12 {
    13     int lop, lop2, a, b, c;
    14     while (scanf("%d", &lop))
    15     {
    16         if (lop == 0)
    17             break;
    18         scanf("%d", &a);
    19         for (lop2 = 0; lop2 < lop - 1; lop2++)
    20         {
    21             scanf("%d", &b);
    22             c = gcd(a, b);
    23             a = a / c*b;
    24         }
    25         printf("%d
    ", a);
    26     }
    27     return 0;
    28 }

    一提交,超出规定的运行时间整整一秒(1000MS),what the fvck?

    结果别人把14行的scanf前面加一个‘~’就AC了

    或者改为

    while (scanf("%d", &lop)!=EOF)

    后来发现题目的要求是

    “输入包含多个测试实例”

    有这种要求的题目一般用

    while(scanf(xxxx) !=EOF)

    的形式就行了。太久没做题,TMD忘了。

  • 相关阅读:
    深拷贝(deep clone)与浅拷贝(shallow clone)
    wait和notify
    Java实现简单RPC框架(转)
    Eclipse 搭建Struts2
    手写HashMap实践
    JVM 类加载器ClassLoader源码学习笔记
    Java 内存模型学习笔记
    Struts2 入门笔记
    struts2 拦截器
    Btrace 拦截时机
  • 原文地址:https://www.cnblogs.com/makejeffer/p/4802169.html
Copyright © 2020-2023  润新知