1 条题解

  • 0
    @ 2025-8-24 21:21:06

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Crazily
    **

    搬运于2025-08-24 21:21:05,当前版本为作者最后更新于2018-11-19 23:14:07,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    老师出了一张pj模拟卷

    第二题就是这玩意。。。。

    考场上的我一看到进制转换就瘫了。。。。。

    考完之后才又去写了一遍

    发现它的核心思想并不是题目所说的那样去判断不同进制的“波浪”

    逆向思维一下

    其实我们应该先生成所给范围内的波浪数

    (就是把每个波浪数打出来存进一个装‘重数’的数组里)

    然后直接遍历数组输出想要的重数的数就行啦

    这样不仅不会超时而且代码也更容易实现

    (咋考试时就想不到呢。。。。。。)

    本人拙码:

    #include<bits/stdc++.h>
    using namespace std;
    int a,b,l,r,c,t,x;
    int v[10000005];//存储重数 
    int main(){
    	memset(v,0,sizeof(v));
    	scanf("%d%d%d%d%d",&a,&b,&l,&r,&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)//不能是相同的数波浪
    				{
    				x=0;
    				t=0;
    				while(x<=r){
    					if(t%2==0){
    						x=x*k+i;
    						++t;
    					}
    					else{
    					    x=x*k+j;
    					    ++t;
    					}
    					if(x>=l&&x<=r) ++v[x];
    				}
    				}
    			}
    		}
    	}
    	for(int i=l;i<=r;++i){
    		if(v[i]==c) printf("%d\n",i);
    	}
    } 
    
    • 1

    信息

    ID
    114
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    1
    已通过
    1
    上传者