码迷,mamicode.com
首页 > 其他好文 > 详细

A 暴力搜索 剪枝是关键

时间:2015-05-25 18:25:36      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

Description

盖伦是个小学一年级的学生,在一次数学课的时候,老师给他们出了一个难题:
老师给了一个正整数 n,需要在不大于n的范围内选择三个正整数(可以是相同的),使它们三个的最小公倍数尽可能的大。盖伦很想第一个解决这个问题,你能帮助盖伦拿到“first blood”吗?


Input

首先是一个正整数T,表示有T组测试数据
每组测试数据是一个正整数n(1<=n<=10^6)

Output

对于每组测试数据,输出最大的最小公倍数,每个输出单独占一行

Sample Input

2
9
7

Sample Output

504
210

 

技术分享
 1 # include <cstdio>
 2 # include <cstring>
 3 # define LL long long
 4 using namespace std ;
 5 
 6 LL gcd(LL a,LL b)
 7 {   if(b==0)
 8       return a;
 9     return gcd(b,a%b);
10 }
11 
12 LL lcm(LL a,LL b)
13 {
14     return a/gcd(a,b)*b;
15 }
16 
17 
18 int main ()
19 {
20    // freopen("in.txt","r",stdin) ;
21     int T ;
22     scanf("%d" , &T) ;
23     while (T--)
24     {
25         LL n ;
26         scanf("%I64d" , &n) ;
27         LL i , j , k , Max = 0;
28         LL t ;
29 
30         for (i = n ; i >= 1 ; i--)
31         {
32             if (i*i*i < Max)
33                      break ;
34 
35             for (j = n ; j >= 1 ; j--)
36             {
37                 if (i*j*j < Max)
38                      break ;
39 
40                 for (k = n ; k >= 1 ; k--)
41                 {
42                     if (i*j*k < Max)
43                      break ;
44                      t = lcm(i,lcm(j,k)) ;
45                        if (t > Max)
46                          Max = t ;
47 
48                 }
49             }
50         }
51         printf("%I64d\n" , Max) ;
52     }
53 
54 
55 
56     return 0 ;
57 }
View Code

 

A 暴力搜索 剪枝是关键

标签:

原文地址:http://www.cnblogs.com/-Buff-/p/4528259.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!