zoukankan      html  css  js  c++  java
  • first blood暴力搜索,剪枝是关键

    First Blood

    题目描述

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

    输入

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

    输出

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

    样例输入

    2
    9
    7

    样例输出

    504
    210
     1 #include<cstdio>
     2 #include<iostream> 
     3 using namespace std;
     4 #define ll long long
     5 ll gcd(ll a,ll b)
     6 {
     7     if(b==0)
     8         return a;
     9     return gcd(b,a%b);
    10 }
    11 ll dd(ll a,ll b)
    12 {
    13     return a/gcd(a,b)*b;
    14 }
    15 int main()
    16 {
    17     int N;
    18     scanf("%d",&N);
    19     while(N--)
    20     {
    21         ll i,j,k,z,a;
    22         cin>>a;
    23         ll max=0;
    24         for(i=a;i>0;i--)
    25         { 
    26             if(i*i*i<max)
    27                 break;
    28             for(j=a;j>0;j--)
    29             {
    30                 if(i*j*j<max)
    31                     break;
    32                 for(k=a;k>0;k--)
    33                 {
    34                     if(i*j*k<max)
    35                         break;
    36                     z=dd(i,dd(j,k));
    37                     if(z>max)
    38                         max=z;
    39                 }
    40             }
    41         }
    42         cout<<max<<endl;
    43     }
    44 }
  • 相关阅读:
    Mybatis-配置解析
    Mybatis-CRUD
    ExtJS3.4升级ExtJS4.2的问题汇总(转)
    Extjs视频
    Freemarker语法
    JSP 语法/标签
    android 入门-ID
    Win10 VS2015 社区版切换到VS2013社区版 进行维护之前的项目
    Win10 AppBar
    Win10 保存Element到相册
  • 原文地址:https://www.cnblogs.com/a1225234/p/4530380.html
Copyright © 2011-2022 走看看