这个题卡精度了 刚开始是2的57次方都已经有误差了 不知道怎么弄
后来加个求余就好了
#include<stdio.h> #include<math.h> #include<algorithm> #include<iostream> #include<string.h> #include<stdlib.h> #include<ctype.h> using namespace std; #define INF 0xfffffff #define ESP 1e-8 #define memset(a,b) memset(a,b,sizeof(a)) #define N 1000005 long long a[200]; int main() { long long l,r,k; while(scanf("%lld %lld %lld",&l,&r,&k)!=EOF) { memset(a,0); int ll=0; long long aa=1; for(int i=0;i<=100;i++) { aa*=k; if(i==0) aa=1; if(aa>r) break; if(l<=aa && aa<=r && (aa%k==0 || aa==1)) a[ll++]=aa; } if(ll==0) printf("-1\n"); else for(int i=0;i<ll;i++) printf("%lld%c",a[i],i==ll-1?‘\n‘:‘ ‘); } return 0; }
时间: 2024-10-13 10:37:28