求n个数的最小公倍数(数值范围的控制)
2015-01-16 21:29
127 查看
Description
求n个数的最小公倍数。INPUT
输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。OUTPUT
为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。SAMPLE INPUT
2 4 6 3 2 5 7
SAMPLE OUTPUT
12 70
解题心得: 本来是很简单的题的,可是由于没有适当的控制算法,导致结果溢出。
AC代码:
1 #include<stdio.h> 2 long int digit[1002]; 3 int f(int a,int b)//寻找a,b最小公倍数 4 { 5 int max,min; 6 if(a>b){ 7 max=a; 8 min=b; 9 } 10 else 11 { 12 max=b; 13 min=a; 14 } 15 while(1){ 16 int temp=max%min; 17 if(!temp) return ((long int)a*(double)(b/min)); 18 //上面必须先除以min然后才乘以a,要不然要溢出 19 max=min; 20 min=temp; 21 } 22 } 23 void ans(int x)//递归求最小公倍数,循序渐进,类似二分 24 { 25 if(x==1) 26 return; 27 int i,k=0; 28 for(i=0;i<x-1;i+=2) 29 digit[k++]=f(digit[i],digit[i+1]); 30 if(x%2) 31 digit[k++]=digit[x-1]; 32 ans(k); 33 } 34 int main() 35 { 36 int n; 37 while(scanf("%d",&n)!=EOF){ 38 int i; 39 for(i=0;i<n;i++) 40 scanf("%ld",&digit[i]); 41 ans(n); 42 printf("%ld\n",digit[0]); 43 } 44 return 0; 45 }
分析图片:
相关文章推荐
- html 中 input 控制输入百分比数值范围(0.0-100)
- 四则运算问题扩充:1、题目避免重复;2、可定制(数量/打印方式);3、可以控制下列参数: 是否有乘除法、是否有括号、 数值范围、加减有无负数、除法有无余数、否支持分数 (真分数, 假分数, …)、是否支持小数 (精确到多少位)、打印中每行的间隔可调整;
- 二柱子问题扩充:1题目避免重复;2可定制(数量/打印方式);3 可以控制下列参数:是否有乘除法,是否有括号,数值范围,加减有无负数,除法有无余数,是否支持分数(真分数,假分数,...),是否支持小数,(精确到多少位),打印中每行的间隔可调整;
- AE+C#控制Globe操作范围
- 用list 接 数值,再讲数值转成 整形数组,排序、再将相邻的数用范围形式表示、
- 维护成本控制范围(激活利润中心)
- 给公司代码分配信贷控制范围
- cout 控制数值的输出精度
- Java基础语法(一)---数据、数值类型、运算符、程序流程控制语句和循环结构
- float精度和数值范围
- Javascript 生成指定范围数值随机数 By shawl.qiu
- float,double等表示的数值范围的计算
- 浅议MySQL数值范围问题
- Shader渲染队列数值范围
- 限制QLineEdit的数值输入范围(QT正则表达式方法),顺便简单介绍下QT正则表达式方法
- Javascript 生成指定范围数值随机
- 【算法】递归求数组指定范围内最大和次大的数值
- 20170305MFC02_滚动条&数值控制&进度条
- cesiumjs通过经纬控制显示范围
- 怎么改变CO的成本控制范围