zoukankan      html  css  js  c++  java
  • UVA 10717 Mint

    UVA_10717

        枚举桌腿的选择,然后求出最小公倍数之后再进行相应的计算、更新即可。

    #include<stdio.h>
    #include<string.h>
    #define MAXN 60
    #define MAXT 15
    int N, T, a[MAXN], t[MAXT];
    long long int low[MAXT], high[MAXT];
    long long int gcd(long long int x,long long int y)
    {
    return y == 0 ? x : gcd(y, x % y);
    }
    int init()
    {
    int i;
    scanf("%d%d", &N, &T);
    if(!N && !T)
    return 0;
    for(i = 0; i < N; i ++)
    scanf("%d", &a[i]);
    for(i = 0; i < T; i ++)
    scanf("%d", &t[i]);
    return 1;
    }
    void solve()
    {
    int i, j, k, p, q;
    long long int temp, ans;
    memset(high, 0x3f, sizeof(high));
    memset(low, 0, sizeof(low));
    for(i = 0; i < N; i ++)
    for(j = i + 1; j < N; j ++)
    for(k = j + 1; k < N; k ++)
    for(p = k + 1; p < N; p ++)
    {
    ans = a[i];
    temp = a[j], ans = ans / gcd(ans, temp) * temp;
    temp = a[k], ans = ans / gcd(ans, temp) * temp;
    temp = a[p], ans = ans / gcd(ans, temp) * temp;
    for(q = 0; q < T; q ++)
    {
    if(ans < t[q] && t[q] - t[q] % ans > low[q])
    low[q] = t[q] - t[q] % ans;
    if((ans - t[q] % ans) % ans + t[q] < high[q])
    high[q] = (ans - t[q] % ans) % ans + t[q];
    }
    }
    for(i = 0; i < T; i ++)
    printf("%lld %lld\n", low[i], high[i]);
    }
    int main()
    {
    while(init())
    {
    solve();
    }
    return 0;
    }


  • 相关阅读:
    NYOJ135 取石子(二)
    NYOJ448 寻找最大数
    NYOJ20吝啬的国度
    NYOJ47过河问题
    NYOJ199无线网络覆盖
    NYOJ92图像有用区域
    NYOJ287Radar
    NYOJ71独木舟上的旅行
    NYOJ484The Famous Clock
    NYOJ148fibonacci数列(二)
  • 原文地址:https://www.cnblogs.com/staginner/p/2283007.html
Copyright © 2011-2022 走看看