• uva 10717【Mint】


    这一题做的有点小苦,但是最终取得了成功,(*^__^*) 嘻嘻……

    起初不知道哪里出问题了,一直WA,然后对照网上的代码一步一步的改啊,提交啊,最终AC了,然后又一步一步的改回到自己原来的样子,(~ o ~)~zZ错误找到了。。。

    不知道WA了多少次,又AC了多少次,不计算了,而且我的代码运行时间比网上的代码时间更短,成就啊,不过有点小浪费空间,其实两个循环可以合并,就少一点空间了。。。

    代码如下: 
     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 
     5 int length[60];
     6 int que[60];
     7 long long lcm[250000];
     8 int n,t;
     9 int num;
    10 
    11 long long gcd(long long a,long long b)
    12 {
    13     return b == 0?a:gcd(b,a%b);
    14 }
    15 long long get_lcm(long long a,long long b,long long c,long long d)
    16 {
    17     long long g = a/gcd(a,b)*b;
    18     g = g/gcd(g,c) * c;
    19     g = g / gcd(g,d) * d;
    20 
    21     return g;
    22 }
    23 void solve()
    24 {
    25     num = 0;
    26     for(int i = 0;i < n;i ++)
    27     {
    28         for(int j = i+1;j < n;j ++)
    29         {
    30             for(int k = j + 1;k < n;k ++)
    31             {
    32                 for(int s = k + 1;s < n;s ++)
    33                 {
    34                     lcm[num ++] = get_lcm(length[i],length[j],length[k],length[s]);
    35                 }
    36             }
    37         }
    38     }
    39     long long low,high;
    40     for(int h = 0;h < t;h ++)//这个可以和上面的合并的,可以减少空间需求
    41     {
    42         int tmp;
    43         scanf("%d",&tmp);
    44         low = 0;
    45         high = 0x7f7f7f7f;//这里赋值要注意点
    46         for(int i = 0;i < num;i ++)
    47         {
    48             long long p = tmp/lcm[i] * lcm[i];
    49             long long q = (tmp % lcm[i] == 0?(tmp/lcm[i]):(tmp/lcm[i] + 1))*lcm[i];
    50             if(p > low)
    51                 low = p;
    52             if(q < high)
    53                 high = q;
    54         }
    55         printf("%lld %lld\n",low,high);
    56     }
    57     
    58 }
    59 
    60 int main()
    61 {
    62     while(scanf("%d%d",&n,&t) == 2)
    63     {
    64         if(n == 0&&t == 0)
    65             break;
    66 
    67         for(int i = 0;i < n;i ++)
    68         {
    69             scanf("%d",&length[i]);
    70         }
    71 
    72         solve();
    73     }
    74 
    75     return 0;
    76 }
  • 相关阅读:
    Matlab 将RGB 图像转换成YCrCb图像
    dotnet中文字符工具类
    dotnet验证参数
    dotnet + LinQ 按照指定的字段 和 排序方式排序
    Angulaur导入其他位置的样式
    Angular4.x跨域请求
    Spring Cloud微服务实战:手把手带你整合eureka&zuul&feign&hystrix
    关于JVM加载class文件和类的初始化
    JVM垃圾回收机制概述
    深入理解JVM
  • 原文地址:https://www.cnblogs.com/Shirlies/p/2450132.html
Copyright © 2020-2023  润新知