题目背景
文件读写
输入文件avoid.in
输出文件avoid.out
限制
1000ms
512MB
题目描述
众所周知, 3这个数字在有些时候不是很吉利,因为它谐音为 “散”
所以徐老师认为只要是 3的整数次幂的数字就不吉利
现在徐老师想知道,在某个范围[l,r] 内,哪些数字是不吉利的? 这样他就可以避开这些数字了
输入格式
输入第一行包含两个整数l,r 表示范围
输出格式
输出第一行包含一个整数表示有多少个数字
第二行从小到依次输出每个不吉利的数字
输入输出样例
输入 #1
3 16
输出 #1
2 3 9
说明/提示
数据范围
对于40% 的数据,满足l<=r<=100
对于80% 的数据,满足l<=r<=5000
对于100% 的数据,满足l<=r<=1000000
AC代码:
#include<bits/stdc++.h>
using namespace std;
int l,r;
int num=1,tmp=0,q[10000],a[10000];
int k (int x){
for (int j=1;j<=tmp;j++){
if (x==q[j])return 0;
}
return 1;
}
int main(){
while (num<=10000000){
tmp++;
q[tmp]=num;
num*=3;
}
cin>>l>>r;
int cnt=0;
for (int i=l;i<=r;i++){
if (k(i)==0){
cnt++;
a[cnt]=i;
}
}
cout<<cnt<<endl;
for (int i=1;i<=cnt;i++){
cout<<a[i]<<" ";
}
return 0;
}