hdu 1019
2016-07-13 11:03
204 查看
题目概述
给定N个数,求其最小公倍数时限
1000ms/2000ms输入
第一行正整数times,其后times行,每行第一个为正整数N,其后N个正整数限制
所有输入的数字皆为正数且在32位整型范围内输出
每行一个正整数,为其最小公倍数样例输入
33 5 7 15
6 4 10296 936 1287 792 1
2 536870912 536870911
样例输出
10510296
288230375614840832
讨论
题目可没说输出也在32位范围之内求最大公约数的gcd会不?两个数的最小公倍数就是两数之积除以其最大公约数,对于多个数也差不多,每次求出两个数的公倍数后即将之视为一个数,继续和后面的数计算即可
题解状态
15MS,1716K,696 B,C++题解代码
#include<stdio.h> #include<string.h> #include<algorithm> #include<vector> using namespace std; #define INF 0x3f3f3f3f #define MAXN 22 #define memset0(a) memset(a,0,sizeof(a)) #define llong long long inline llong gcd(llong a, llong b)//内联的 兴许能快点 { while (b) { llong c = a%b; a = b; b = c; } return a; } llong fun(int N) { llong a, b; scanf("%lld", &a);//input for (int p = 1; p < N; p++) { scanf("%lld", &b);//input//没有必要把每个输入都存下来 算完公倍数扔掉就可以了 a = a*b / gcd(a, b); } return a; } int main(void) { //freopen("vs_cin.txt", "r", stdin); //freopen("vs_cout.txt", "w", stdout); int times; scanf("%d", ×);//input while (times--) { int N; scanf("%d", &N);//input printf("%lld\n", fun(N));//output } }
EOF
相关文章推荐
- java list转JSONObject报错
- 前端开发环境配置
- thinkphp 整合phpqrcode 生成二维码
- C#实现汉字转换为拼音缩写的代码
- GaN(第三代器件)特性的总结
- hdu 2473 帮派
- android camera HAL v3.0详细介绍(二)
- (4.2.32.6)android热修复之Andfix方式:Andfix的Hook方式打补丁原理
- iOS开发工程师与UI视觉设计师不得不说的故事
- phpstudy虚拟主机配置
- angularjs相关知识细化
- Valid Parentheses & Longest Valid Parentheses
- Myeclipse2014找不到Help-->install new software
- 记一次基于Unity的Profiler性能分析
- Java的泛型
- Hadoop学习笔记:MapReduce框架详解
- 微信扫码登陆过程。
- SSD:Single Shot MultiBox Detector 心得 (持续更新中。。。)
- 用html、jquery、php编写新闻后台管理页面,动态添加新闻数据并实现数据的增删改查功能
- Java性能优化指南系列(三):理解JIT编译器