UVa 10717 - Mint
来源:互联网 发布:arttemplate 遍历数组 编辑:程序博客网 时间:2024/05/20 10:12
題目:給定n種硬幣,想要從其中取出四中當做桌子的腿,如果目標高度已知,求兩側最接近的高度。
分析:數論。枚舉其中的四格硬幣,計算最小公倍數,然後求出目標高度最接近兩個公倍數即可。
說明:注意使用long long,防止溢出╮(╯▽╰)╭。
#include <cstdio>typedef long long ll;int gcd(int a, int b){return a%b?gcd(b, a%b):b;}ll lcm(int a, int b){return 0LL+a/gcd(a, b)*b;}int main(){int n, m, table, coins[51];ll L[51], R[51];while (~scanf("%d%d",&n,&m) && n && m) {for (int i = 0; i < n; ++ i)scanf("%d",&coins[i]);for (int i = 0; i < m; ++ i) {scanf("%d",&table);ll min = 0, max = -1, lcmvalue;for (int a = 0; a < n; ++ a)for (int b = 0; b < a; ++ b)for (int c = 0; c < b; ++ c)for (int d = 0; d < c; ++ d) {lcmvalue = lcm(coins[a], coins[b]);lcmvalue = lcm(lcmvalue, coins[c]);lcmvalue = lcm(lcmvalue, coins[d]);L[i] = table/lcmvalue*lcmvalue;if (table == L[i])R[i] = L[i];else R[i] = L[i]+lcmvalue;if (min < L[i])min = L[i];if (max < 0 || max > R[i])max = R[i];}printf("%lld %lld\n",min,max);}} return 0;}
0 0
- UVA 10717 - Mint
- UVA 10717 Mint
- UVA - 10717 Mint
- UVa:10717 Mint
- UVA 10717 - Mint
- UVA 10717 Mint
- UVA 10717 MINT
- UVA - 10717 Mint
- UVa 10717 - Mint
- UVa 10717 - Mint
- uva 10717 Mint(lcm)
- uva 10717 - Mint(欧几里得求最小公倍数)
- UVA 10717 Mint(多个数最小公倍数)
- UVA - 10717 - Mint (GCD + LCM)
- UVa 10717 Mint (DFS枚举4个数的lcm)
- UVa 10717 - Mint (枚举状态求LCM更新结果)
- 10717 - Mint
- 10717 - Mint
- golang标准库学习——buffio包
- linux常用命令小结(二)
- CentOS-7安装手册MySQL5.6
- 类目
- Aop/AspectJ
- UVa 10717 - Mint
- LeetCode:Best Time to Buy and Sell Stock II
- 过滤器,监听器,Servlet 线程安全,JSP基础
- MySQL 5.6 for Windows 解压缩版配置安装
- 20151205正则第七部分(awk复习)
- keystone中Vertify operation出现:No handlers could be found for logger "keystoneclient.httpclient"的问题
- centos 7 安装mp3解码器
- CRITICAL_SECTION的使用http://blog.163.com/up_downdown/blog/static/1803443272011311912324/
- 解决 HorizontalScrollView 和 ViewPager 的滑动冲突