UVaOJ10717 - Mint
来源:互联网 发布:origin软件绘图 编辑:程序博客网 时间:2024/06/05 03:42
Problem E: Mint
The Royal Canadian Mint has commissioned a new series of designer coffee tables, with legs that are constructed from stacks of coins. Each table has four legs, each of which uses a different type of coin. For example, one leg might be a stack of quarters, another nickels, another loonies, and another twonies. Each leg must be exactly the same length.Many coins are available for these tables, including foreign and special commemorative coins. Given an inventory of available coins and a desired table height, compute the lengths nearest to the desired height for which four legs of equal length may be constructed using a different coin for each leg.
Input consists of several test cases. Each case begins with an integers: 4 <= n<= 50 giving the number of types of coins available, and 1 <= t <= 10 giving the number of tables to be designed. n lines follow; each gives the thickness of a coin in hundredths of millimetres. t lines follow; each gives the height of a table to be designed (also in hundredths of millimetres). A line containing 0 0 follows the last test case.
For each table, output a line with two integers: the greatest leg length not exceeding the desired length, and the smallest leg length not less than the desired length.
Sample Input
4 250100200400100020000 0
Output for Sample Input
800 12002000 2000
Gordon V. Cormack
题目大意:
输入n,m,表示有n种不同的硬币,m张桌子。下面n行是n种硬币的数值,接下来m行是每个桌子高度。每个桌子都固定有4个脚而且高度一样。用硬币来组成桌脚,要求一只脚要用一样的硬币。对于每个桌子输出两个数字,一个是小于等于该桌子高度的最大值,一个是大于等于桌子高度的最小值。
解题方法:
源代码:
#include <iostream>#include <cstdio>using namespace std;int n, t, goal, L, R;int high[55], num[5];int gcd (int a, int b) { return b == 0 ? a : gcd(b, a % b);}int lcm (int a, int b) { if (a < b) { int temp = a; a = b; b = temp; } return a / gcd(a, b) * b;}void solve () { int l, r, i; int LCM = num[0]; for (i = 0; i < 4; i ++) { LCM = lcm(LCM, num[i]); } for (i = 0; LCM * (i + 1) < goal; i ++); if (LCM * (i + 1) == goal) { l = r = LCM * (i + 1); } else { l = LCM * i; r = LCM * (i + 1); } if (l > L) { L = l; } if (r < R) { R = r; }}void dfs(int p, int c) { if (c == 4) { solve(); return; } for (int i = p + 1; i <= n - 4 + c; i ++) { num[c] = high[i]; dfs(i, c + 1); } return;}int main() { while (scanf("%d%d", &n, &t) != EOF && n && t) { for (int i = 0; i < n; i ++) { scanf("%d", &high[i]); } while (t --) { scanf("%d", &goal); L = -0x3f3f3f3f; R = 0x3f3f3f3f; for (int i = 0; i <= n - 4; i ++) { num[0] = high[i]; dfs(i, 1); } printf("%d %d\n", L, R); } } return 0;}
- UVaOJ10717 - Mint
- mint
- poj1855(Mint)
- linux mint
- 10717 - Mint
- 10717 - Mint
- UVA10717- Mint
- Mint-10717
- mint sogou
- Mint安装
- Ubuntu & Mint Installation Guide
- linux mint 12 ibus
- linux mint chrome
- linux mint flasher plugin
- Mint的更新源
- UVA 10717 - Mint
- linux mint 使用笔记
- MINT 开机亮度设置
- hdu1195 Open the Lock(BFS)
- android:layout_weight和android:layout_gravity用法
- ireport+jasperreport 直接输出到打印机 普通报表 交叉报表
- CF 329A(Purification-贪心-非DLX)
- poj 1723Soldiers 带全中位数
- UVaOJ10717 - Mint
- 海量数据处理算法—Bloom Filter
- 安装Eclipse Maven插件的几种方法
- 润乾报表——样式的优先级
- 前后台系统VS嵌入式OS,何时该上OS?
- Linux系统如何平滑生效NAT-DNAT改进以及解释
- codeforce 192 div2解题报告
- 与关机相关的几个命令
- hdu 1664 BFS + 数论