zoukankan      html  css  js  c++  java
  • codeforces #549 div2 B

    题意::

      输入一个数n,找出1->n中各位上的数的乘积最大值

    思路::

      要求这个最大值,显然是9肯定比较好但并不最优因为还要兼顾其他位上的数,例 27 (显然27比19要更优)

      那就应该决策一下哪种是最优的

         init(t)表示t的各位数乘积

         1 init (n/10-1)*9

         2)(n%10)*init(n/10);

      详情见代码::

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define ll long long
     4 const int maxn=1e5+5;
     5 int ma[maxn];
     6 int init(int x)
     7 {
     8     if(x<10){return max(1,x);}
     9     return max(x%10*init(x/10),init(x/10-1)*9);
    10 }
    11 int main()
    12 {
    13     int n;
    14     scanf("%d",&n);
    15     printf("%d
    ",init(n));
    16     return 0;
    17 }

    若有不足之处请见谅!!!

    纵使单枪匹马,也要勇闯天涯
  • 相关阅读:
    [模板]杜教筛
    [NOIP2014]解方程
    [NOIP2016] 组合数问题
    [HAOI2011] Problem b
    Rmq Problem mex
    [模板]Link-Cut-Tree
    [SDOI2013]森林
    单调队列优化多重背包
    [USACO17JAN]Promotion Counting
    [模板] 点分治
  • 原文地址:https://www.cnblogs.com/sj-gank/p/11468122.html
Copyright © 2011-2022 走看看