GitBook

这里写图片描述

因为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