zoukankan      html  css  js  c++  java
  • 483. 最小好进制 力扣 数学 hard

    题目描述:

    对于给定的整数 n, 如果n的k(k>=2)进制数的所有数位全为1,则称 k(k>=2)是 n 的一个好进制。

    以字符串的形式给出 n, 以字符串的形式返回 n 的最小好进制。

    示例 1:

    输入:"13"
    输出:"3"
    解释:13 的 3 进制是 111。 

    题源:https://leetcode-cn.com/problems/smallest-good-base/

    注意点:

    string转longlong:stol(string)   

    string转int:stoi(string)

    string转float,转double: stof(string), stod(string)

    数字类型转string:to_string(num)

    开根号(非平方根),pow( , 1.0/m)

    题解:  

    class Solution {
    public:
        string smallestGoodBase(string n) {
         long long N=stol(n);
         int maxM=(int)(log(N*1.0)/log(2));
         long long k;
         for(int  m=maxM;m>0;m--)
         {
             k=(long long)pow(N,1.0/m);
            // long long s=(1-pow(k,m+1))/(1-k);
             long long s = 1, mul = 1;   // 计算 (11...11)k 对应的十进制值
                for (int i = 1; i <= m; ++i) {
                    mul *= k;
                    s += mul;
                }
    
             //printf("m=%d k=%lld s=%lld
    ",m,k,s);
             //if(m==6) {printf("%lld
    ",pow(k,m+1)); printf("%lld",k-1);}
             
             if (s==N) return to_string(k);
         }
         return to_string(N-1);
        }
    };

     

  • 相关阅读:
    poj 3243 Clever Y(BabyStep GiantStep)
    poj 2417 Discrete Logging
    poj 3481 Double Queue
    hdu 4046 Panda
    hdu 2896 病毒侵袭
    poj 1442 Black Box
    hdu 2815 Mod Tree
    hdu 3065 病毒侵袭持续中
    hdu 1576 A/B
    所有控件
  • 原文地址:https://www.cnblogs.com/stepping/p/14900336.html
Copyright © 2011-2022 走看看