题目链接:https://www.nowcoder.com/acm/contest/175/A
题目名字吓死人
std:
我
太可啪了
一道简单的模拟题。虽然我把题意想错了。
按照题意模拟输出和继承。
WA 点: 因为数据K范围在263之内(long long:263-1,unsigned long long int :264-1)
所以会很容易爆
也会爆回[l,r]范围内 就会WA
如何避免?
首先假设 x 为继承的值
那么每次改变都是x=x*k
如果每次改变的范围都在r/k的范围内 那么就可避免爆
代码如下:
#include<bits/stdc++.h>
#define ll long long
using namespace std; int n;
ll l,r,k,x;
bool check=false; ll Read(){
ll xxx=,fff=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-') fff=-;ch=getchar();}
while(ch<=''&&ch>=''){xxx=(xxx<<)+(xxx<<)+ch-'';ch=getchar();}
return xxx*fff;
} int main(){
n=Read();
while(n--){
l=Read();r=Read();k=Read();
check=false;
switch(k){
case : if(l<=&&r>=){
putchar('');putchar(' ');
check=true;
}
case : if(l<=&&r>=){
putchar('');putchar(' ');
check=true; }
break;
default:for(x=;;){
if(l<=x&&x<=r) {
printf("%lld ",x);
check=true;
}
if(x<=r/k) x*=k;else break;
}
}
if(!check) {
puts("None.");
}
else putchar('\n');
}
return ;
}
PE几次以后才知道puts()自动换行