贝贝的波浪数
#include<iostream> #include<string> #include<stdio.h> #include<algorithm> using namespace std; bool mark[10000005]; int a,b,L,R,K; int A[1005]; bool check(int res){ int k=0; for(int i=a;i<=b;i++){ int x=res,t=0; while(x){ A[t++]=x%i; x/=i; } if(t==1)continue; if(A[0]==A[1])continue; bool f=true; for(int j=2;j<t;j++){ if(A[j]!=A[j-2])f=false; } if(f)k++; } return k==K; } void solve(int x,int y,int B){ int t=0; long long res=0; while(1){ if(t%2==0)res=res*B+x; else res=res*B+y; t++; if(res>R)break; if(res>=L&&check(res))mark[res]=1; } } int main(){ int k,ans=0; scanf("%d %d %d %d %d",&a,&b,&L,&R,&K); for(int i=a;i<=b;i++){ for(int i1=1;i1<i;i1++){ for(int i2=0;i2<i;i2++){ solve(i1,i2,i); } } } int res=0; for(int i=L;i<=R;i++) if(mark[i]) printf("%d\n",i); //printf("%d\n",i); return 0; }