Potion-making (Codeforces 1525A)
Tags: Math, number theory

You have an initially empty cauldron, and you want to brew a potion in it. The potion consists of two ingredients: magic essence and water. The potion you want to brew should contain exactly $$$k\ \%$$$ magic essence and $$$(100 - k)\ \%$$$ water.In one step, you can pour either one liter of magic essence or one liter of water into the cauldron. What is the minimum number of steps to brew a potion? You don't care about the total volume of the potion, only about the ratio between magic essence and water in it.A small reminder: if you pour $$$e$$$ liters of essence and $$$w$$$ liters of water ($$$e + w > 0$$$) into the cauldron, then it contains $$$\frac{e}{e + w} \cdot 100\ \%$$$ (without rounding) magic essence and $$$\frac{w}{e + w} \cdot 100\ \%$$$ water.

Input: The first line contains the single $$$t$$$ ($$$1 \le t \le 100$$$) — the number of test cases.The first and only line of each test case contains a single integer $$$k$$$ ($$$1 \le k \le 100$$$) — the percentage of essence in a good potion.

Output: For each test case, print the minimum number of steps to brew a good potion. It can be proved that it's always possible to achieve it in a finite number of steps.

Note: In the first test case, you should pour $$$3$$$ liters of magic essence and $$$97$$$ liters of water into the cauldron to get a potion with $$$3\ \%$$$ of magic essence.In the second test case, you can pour only $$$1$$$ liter of essence to get a potion with $$$100\ \%$$$ of magic essence.In the third test case, you can pour $$$1$$$ liter of magic essence and $$$3$$$ liters of water.

Sample Inputs:
3
3
100
25

Sample Outputs:
100
1
4

Solution (Python):
import math
t = int(input())
for _ in range(t):
    k = int(input())
    d = math.gcd(k, 100)
    print(k // d + (100 - k) // d)

Solution (Python):
from math import gcd

def solve(k):
    return 100 // gcd(k, 100)

def print_solution(solution):
    print(solution)

def main():
    t = int(input().strip())
    for _ in range(t):
        k = int(input().strip())
        solution = solve(k)
        print_solution(solution)
if __name__ == '__main__':
    main()

Solution (Python):
import math
for _ in range(int(input())):
    n = int(input())
    gcd = math.gcd(n, 100)
    print(int(100 / gcd))