• 洛谷P2699小浩的幂次运算


    二分走一波,没想到题解的大佬做法 p_q

    注意爆long long,所以先对数取一下上限

    二分确定下限,然后输出

    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    #include<stack>
    #include<set>
    #include<queue>
    #include<vector>
    #include<iostream>
    #include <limits.h>
    #include<algorithm>
    #define MAXN 1010100
    #define LL unsigned long long
    // #define ll __int64
    #define INF 0x7fffffff
    #define cs(s) freopen(s,"r",stdin)
    #define mem(x) memset(x,0,sizeof(x))
    #define PI acos(-1)
    #define eps 1e-10
    using namespace std;
    int gcd(int a,int b){return b?gcd(b,a%b):a;}
    int lcm(int a,int b){return a/gcd(a,b)*b;}
    LL powmod(LL a,LL b){LL ans=1;while(b){if(b%2)ans=ans*a;a=a*a;b/=2;}return ans;}
    //head
    LL ll,rr,w,L,R,cnt;
    LL mid,ans;
    int main(){
        scanf("%llu%llu%llu",&ll,&rr,&w);
        if(w==1){
            puts("1");
            return 0;
        }
        int l=0,r=log(rr)/log(w);
        R=r;
        l=0,r=log(rr)/log(w);
        ans=-1;
        while(l<=r){
            mid=(l+r)/2;
            if(powmod(w,mid)>=ll)ans=mid,r=mid-1;
            else l=mid+1;
        }
        L=ans;
        for(int i=L;i<=R;i++){
            ans=powmod(w,i);
            if(ans>=ll&&ans<=rr)
            printf("%lld ",ans),cnt++;
        }
        if(!cnt)puts("-1");
        return 0;
    }
    
  • 相关阅读:
    移动端测试知识概览
    24、CSS定位
    23、Xpath
    MySQL触发器
    MySQL存储过程和函数
    Cookie详解
    简单漏桶限流
    PHP异常和错误
    工厂方法模式
    简单工厂模式
  • 原文地址:https://www.cnblogs.com/pubgoso/p/10759741.html
Copyright © 2020-2023  润新知