View Code of Problem 2594

#include <stdio.h>
#include "string.h"
long long int sfun(int *bb,int b,long long int x)
{
    long long int sum=0;
    for(int i=0;i<b;i++)
        sum+=(x-1+bb[i])/bb[i];
    return sum;
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int b,bb[1005];
        long long int left,right,n;
        scanf("%d%lld",&b,&n);
        for(int i=0;i<b;i++)
            scanf("%d",&bb[i]);
        left=0;right=n*100005;
        while(left<right)
        {
            long long int middle=(left+right)/2;
            if(sfun(bb,b,middle)<n) left=middle+1;
            else right=middle;
        }
        
        long long int temp=sfun(bb,b,left-1);
        int ans=0;
        for(int i=0;i<b;i++)
        {
            if((left-1)%bb[i]==0)
            {
                temp++;
                if(temp==n)
                {
                    ans=i+1;
                    break;
                }
            }
        }
        static int leap=1;
        printf("Case #%d: %d\n",leap++,ans);
    }
}

Double click to view unformatted code.


Back to problem 2594