zoukankan      html  css  js  c++  java
  • CF614A【签到题】

    题目链接[http://codeforces.com/problemset/problem/614/A]

    题意:输入三个数l、r、k(1 ≤ l ≤ r ≤ 1018, 2 ≤ k ≤ 109),输出所有的k的非负整数幂,并且幂的值在区间[l,r]内。

    题解:很简单,暴力就可以,但是有一个坑点,在取幂的时候,值会溢出,这个时候需要特判一下,当(k^x)>(r/k)的时候就结束取幂。当然还有其他办法。

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    const int INF = INT_MAX;
    const int maxn = 1e5 + 15;
    LL l, r, k;
    int main ()
    {
        scanf("%lld%lld%lld", &l, &r, &k);
        bool fg = true;
        LL t = 1;
        while(t <= r)
        {
            if(t >= l)
            {
                printf("%lld ", t);
                fg = false;
            }
            if(t > (r / k)) break;
            t *= k;
        }
        if(fg)
            printf("-1");
        printf("
    ");
        return 0;
    }
    想的太多,做的太少。
  • 相关阅读:
    linux echo 换行
    linux 脚本 逻辑关系的写法及区别
    linux vim ***
    跟我一起学Makefile
    linux awk
    linux grep命令 ***
    unbuntu 安装及服务器配置
    linux 静态库文件
    samba 配置
    linux tar
  • 原文地址:https://www.cnblogs.com/pealicx/p/6420902.html
Copyright © 2011-2022 走看看