E - L
#include<stdio.h>
#include<math.h>
#include<algorithm>
#include<stack>
#include<string.h>
using namespace std;
int main()
{
__int64 l,r,m,i,j,k,a;
__int64 num[100];
while(~scanf("%I64d %I64d %I64d",&l,&r,&k))
{
m=1;a=0;
int mark=0;
while(m<=r&&k!=1)
{
if(m>=l&&m<=r)
{
mark=1;
num[a++]=m;
}
m*=k;
if(m>r)/*******
//妙妙妙
break;**********/
}
if(mark==1&&k!=1)
{
printf("%I64d",num[0]);
for(i=1;i<a;i++)
printf(" %I64d",num[i]);
printf("\n");
}
else if(mark==0&&k!=1)
printf("-1\n");
else if(k==1)
printf("1\n");
}
return 0;
}
/*#define MAXN 101000
#define LL long long
#define ll __int64
using namespace std;
int main()
{
ll l,r,k;
while(scanf("%I64d%I64d%I64d",&l,&r,&k)!=EOF)
{
ll num=1;
int bz=0;
while(num<=r)
{
if(num>=l)
{
if(bz==0)
{
bz=1;
printf("%I64d",num);
}
else
printf(" %I64d",num);
}
if(num>r/k)
break;
num*=k;
}
if(bz==0)
printf("-1\n");
else
printf("\n");
}
return 0;
} */

本篇博客介绍了一个使用C++编写的程序,该程序读取两个整数l和r以及一个乘数k,然后找出在l到r范围内所有可以被k整除的数,并按顺序打印出来。如果找不到这样的数,则输出-1。代码中使用了__int64类型来处理大整数。
1613

被折叠的 条评论
为什么被折叠?



