TopcoderArchiveVisit Topcoder
SRM2 Feb 2008
SRM 390

BuildCircuit

Problem statement, definition, constraints, and public examples.

Problem Statement

A serial-parallel resistor circuit is either
  1. a single resistor. The resistance of such circuit is equal to the resistance of the resistor. Or
  2. several circuits R1,R2,...,Rn combined in serial. The resistance is equal to R1+R2+...+Rn. Or
  3. several circuits R1,R2,...,Rn combined in parallel. The resistance is equal to 1/((1/R1)+(1/R2)+...+(1/Rn)).

Given two positive integers a and b, your task is to build a serial-parallel resistor circuit that has resistance equal to a/b. You are only allowed to use two kinds of resistors: R=1 and R=2. Return the minimal number of resistors needed. If the circuit cannot be built with 16 or less resistors, return -1.

Definition

Class:
BuildCircuit
Method:
minimalCount
Parameters:
int, int
Returns:
int
Method signature:
int minimalCount(int a, int b)
(be sure your method is public)

Constraints

  • a and b will each be between 1 and 50000, inclusive.

Examples

  1. 1
    1
    Returns: 1
    One unit resistor is enough.
  2. 2
    3
    Returns: 2
    Combine R=1 and R=2 in parallel.
  3. 6
    5
    Returns: 3
    Combine R=1 and R=2 in serial, then with R=2 in parallel.
  4. 42
    47
    Returns: 7
  5. 1
    20
    Returns: -1
  6. 756
    874
    Returns: 10
Back to all problems