1 solutions

  • 0
    @ 2025-11-5 17:59:45

    C++ :

    #include <stdio.h>
    
    unsigned gcd(unsigned a, unsigned b){
       if (b == 0) return a;
       return gcd(b,a%b);
    }
    
    unsigned lo,hi,bestlo, besthi, c[100], i,j,k,m,n,t,L,g;
    
    main(){
       while (2 == scanf("%d%d",&n,&t)) {
          for (i=0;i<n;i++) scanf("%d",&c[i]);
          while (t--) {
             scanf("%d",&L);
             bestlo = 0;
             besthi = 0xffffffff;
             for (i=0;i<n;i++) for (j=i+1;j<n;j++) for (k=j+1;k<n;k++) for (m=k+1;m<n;m++) {
                g = c[i]/gcd(c[i],c[j])*c[j];
                g = g/gcd(g,c[k])*c[k];
                g = g/gcd(g,c[m])*c[m];
                lo = L/g*g;
                if (lo > bestlo) bestlo = lo;
                if (lo != L) lo += g;
                if (lo < besthi) besthi = lo;
             }
             printf("%u %u\n",bestlo,besthi);
          }
       }
    }
    
    
    • 1

    Information

    ID
    18703
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By