洛谷 P1112 波浪数

题目描述

波浪数是在一对不同数字之间交替转换的数,如 12121211212121,双重波浪数则是指在两种进制下都是波浪数的数,如十进制数 191919191919 是一个十进制下的波浪数,它对应的十一进制数 121212121212 也是一个波浪数,所以十进制数 191919191919 是一个双重波浪数。特别地,只有一位的数也算作波浪数,例如 11。

类似的可以定义三重波浪数,三重波浪数在三种不同的进制中都是波浪数,甚至还有四重波浪数,如 300(10)=606(7)=363(9)=454(8)=1A1(13)300(10)​=606(7)​=363(9)​=454(8)​=1A1(13)​,下标表示采用的进制。你的任务就是在指定范围内找出双重、三重、四重波浪数。

输入格式

单独一行包含五个用空格隔开的十进制整数 l,r,L,R,kl,r,L,R,k。[l,r][l,r] 表示应当考虑的进制的范围,[L,R][L,R] 表示应当考虑的数字的范围,kk 表示你应该找的波浪数的重数。

输出格式

从小到大以十进制形式输出指定范围内的指定重数的波浪数。一行输出一个数。

输入输出样例

输入 #1

10 11 190000 960000 2

输出 #1

191919
383838
575757
767676
959595
话不多说直接上程序:

点个赞再走吧

#include<bits/stdc++.h>
using namespace std;
int f[10000005];
long long a,b,x,y,c;
int main(){
    memset(f,0,sizeof(f));
    cin>>a>>b>>x>>y>>c;
    for(int k=a;k<=b;k++){
        for(int i=1;i<k;i++){
            for(int j=0;j<k;j++){
                if(i!=j)
                {
	                int k1=0;
	                int k2=0;
	                while(k1<=y){
	                    if(k2%2==0){
	                        k1=k1*k+i;
	                        k2++;
	                    }else{
	                        k1=k1*k+j;
	                        k2++;
	                    }
	                    if(k1>=x&&k1<=y) 
							f[k1]++;
                	}
                }
            }
        }
    }
    for(int i=x;i<=y;++i)
        if(f[i]==c)
        	cout<<i<<endl;
}

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值