Submission #12206

#TimeUsernameProblemLanguageResultExecution timeMemory
12206qja0950Min-cost GCD (GA9_mcg)C++98
30 / 100
158 ms1084 KiB
//
//  main.cpp
//  2. Min-cost GCD (mcg)
//
//  Created by KJBS2 on 2014. 12. 24..
//  Copyright (c) 2014년 KJBS2. All rights reserved.
//

#include <stdio.h>
#include <algorithm>

using namespace std;

typedef long long ll;

#define MAX_LL ((ll)1*0x7fffffff*0x7fffffff)

ll A, B, P, Q;
ll X, Y, Z, W;
void PROCESS() {
    scanf("%lld%lld%lld%lld", &A, &B, &P, &Q);
    X = 0; Y = MAX_LL;
    for(; A!=0 && B!=0;) {
        ll C = A % B, D = A / B;
        
        Z = X + P;
        W = X + D * Q;
        
        if(Y != MAX_LL) {
            Z = min(Z, Y + P + P);
            Z = min(Z, Y + D * Q);
            W = min(W, Y + P + D * Q);
        }
        X = Z;
        Y = W;
        
        A = B; B = C;
    }
    
    printf("%lld\n", min(X, Y) );
}

int main() {
    int T; scanf("%d", &T);
    for(int i=0; i<T; i++)
        PROCESS();
    
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...