【CodeForces】[614A]Link/Cut Tree

这里写图片描述

因为pow会有精度丢失
所以使用了一直自乘
对于最大值
因为res有可能超出__int64
所以终止条件只需要在res自乘前写
res>r/k
效果等同于在循环开始时写
res>r (因为此时已经执行res=res*k)

#include<stdio.h>
int main() {

//  freopen("input.txt","r",stdin);
//  freopen("ACoutput.txt","w",stdout);

    __int64 l,r,k;
    while(scanf("%I64d %I64d %I64d",&l,&r,&k)!=EOF) {
        bool flag=false;
        __int64 res=1;
        while(1) {
            if(res>=l&&res<=r) {
                printf("%I64d ",res);
                flag=true;
            }
            if(res>r/k)
                break;
            res*=k;
        }
        if(!flag)
            printf("-1");
        printf("\n");

    }
    return 0;
}

题目地址:【CodeForces】[614A]Link/Cut Tree

posted @ 2016-04-07 07:08  BoilTask  阅读(9)  评论(0编辑  收藏  举报