Foreign Exchange(外汇)
时间限制:2s 内存限制:1024MB
【原题地址】
所有图片源自Atcoder,题目译文源自脚本Atcoder Better!
点击此处跳转至原题
【问题描述】
【输入格式】
【输出格式】
【样例1】
【样例输入1】
4
5 7 0 3
2 2
4 3
5 2
【样例输出1】
5
【样例说明1】
【样例2】
【样例输入2】
10
32 6 46 9 37 8 33 14 31 5
5 5
3 1
4 3
2 2
3 2
3 2
4 4
3 3
3 1
【样例输出2】
45
【解题思路】
老汉使用到的是XXX的解题方式
本题只要求出第n个货币最多的数额,即尽可能的把所有能换的货币都换成下一货币,直到最终换成n为止,题目中无需考虑原来货币量的变化,因此直接按照输入s、t的顺序,每次输入都直接对下一数组值更改,完成操作后,n下标即为最终答案
代码注释有详细过程
【代码】
package ABC341_B_ForeignExchange;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
long[] a = new long[n + 1];
for (int i = 1; i <= n; i++) {
a[i] = scan.nextLong();
}
for (int i = 1; i < n; i++) {
long s = scan.nextLong();
long t = scan.nextLong();
a[i + 1] += t * (a[i] / s);
}
System.out.println(a[n]);
scan.close();
}
}