Orig Description
Score : 400 points
Problem StatementSnuke has one biscuit and zero Japanese yen (the currency) in his pocket.
He will perform the following operations exactly K times in total, in the order he likes:
Hit his pocket, which magically increases the number of biscuits by one.
Exchange A biscuits to 1 yen.
Exchange 1 yen to B biscuits.
Find the maximum possible number of biscuits in Snuke's pocket after K operations.
Constraints
1 \leq K,A,B \leq 10^9
K,A and B are integers.
InputInput is given from Standard Input in the following format:
K A B
OutputPrint the maximum possible number of biscuits in Snuke's pocket after K operations.
Sample Input 14 2 6
Sample Output 17
The number of biscuits in Snuke's pocket after K operations is maximized as follows:
Hit his pocket. Now he has 2 biscuits and 0 yen.
Exchange 2 biscuits to 1 yen. his pocket. Now he has 0 biscuits and 1 yen.
Hit his pocket. Now he has 1 biscuits and 1 yen.
Exchange 1 yen to 6 biscuits. his pocket. Now he has 7 biscuits and 0 yen.
Sample Input 27 3 4
Sample Output 28
Sample Input 3314159265 35897932 384626433
Sample Output 348518828981938099
Extracted Specification
An integer K (1 ≤ K ≤ 10^9).
An integer A (1 ≤ A ≤ 10^9).
An integer B (1 ≤ B ≤ 10^9).
### Example Input:
```
14 2 6
```
### Function Signature:
Write a function f(K, A, B) that takes in the input.
def f(K: int, A: int, B: int):
'''
K: an integer
A: an integer
B: an integer
'''
Test Case Generator
Sure! Let's write a test case generator for the given problem statement. The generator will create random values for \(K\), \(A\), and \(B\) within the specified constraints.
Here is the test case generator:
```python
import random
def tcgen():
K = random.randint(1, 10**9)
A = random.randint(1, 10**9)
B = random.randint(1, 10**9)
return K, A, B
# Example usage:
K, A, B = tcgen()
print(K, A, B)
```
This generator will produce random values for \(K\), \(A\), and \(B\), ensuring they are within the given constraints (1 ≤ \(K, A, B\) ≤ 10^9).
### Explanation:
1. **K**: The number of operations, randomly chosen between 1 and 10^9.
2. **A**: The number of biscuits required to exchange for 1 yen, randomly chosen between 1 and 10^9.
3. **B**: The number of biscuits you get for 1 yen, randomly chosen between 1 and 10^9.
The generator can be used to produce a variety of test cases to thoroughly test the solution for the given problem statement.
Extract Arguments
def extract_arguments(fh):
K, A, B = map(int, fh.readline().strip().split())
return K, A, B
# if __name__ == "__main__":
# input_path = sys.argv[1]
# with open(input_path, 'r') as fh:
# K, A, B = extract_arguments(fh)
# f(K, A, B)