【CodeForces】[614A]Link/Cut Tree

文章字数:195

问题描述

问题分析

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#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

该内容采用 CC BY-NC-SA 4.0 许可协议。

如果对您有帮助或存在意见建议,欢迎在下方评论交流。

加载中...