列表

详情


NC239209. 输出练习

描述

为了练习输出,你需要从小到大输出 范围内能表示为 k 的非负整数次方的所有数。

一共有 T 次练习。注意所有数的 0 次方都是 1,特别地,本题中认为 

输入描述

第一行一个整数 T

接下来 T 行,每行三个整数 l,r,k 表示一次练习的参数。

输出描述

T 行,每行从小到大输出符合要求的数,若不存在,输出一行 None.(包括句点)。

示例1

输入:

4
1 10 2
2 4 5
19562 31702689720 17701
3680 37745933600 10

输出:

1 2 4 8 
None.
313325401 
10000 100000 1000000 10000000 100000000 1000000000 10000000000

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++ 11.0.1) 解法, 执行用时: 43ms, 内存消耗: 564K, 提交时间: 2022-12-10 21:28:46

#include<iostream>
using namespace std;
int main(){
	int T;cin>>T;
	while(T--){
		long long l,r,k,t=1;
		bool flag=true;
		cin>>l>>r>>k;
		if(k==0&&l==0){cout<<"0 ";flag=false;}
		while(t<=r){
			if(t>=l){flag=false;cout<<t<<" ";}
			if(k==0||k==1)break;
			if(t>r/k)break;t=t*k;
		}
		if(flag)cout<<"None.";
		cout<<endl;
	}
	return 0;
}

Python3 解法, 执行用时: 1729ms, 内存消耗: 5032K, 提交时间: 2022-10-29 19:01:32

t = int(input())

for _ in range(t):
    l, r, k = [int(s) for s in input().split()]
    ok = False
    s = set()
    for i in range(0, 64):
        p = pow(k, i)
        if l <= p and p <= r:
            s.add(p)
    lst = s
    lst = sorted(lst)
    if len(lst ) != 0:
        print(*lst)
    else:
        print("None.")

上一题