题目链接:https://www.vijos.org/p/1162

这题的解法我觉得可能是模拟吧,但是题的分类又是构造QAQ。。。。。

不是很懂,所以我们把这个方法叫做奇技淫巧吧

这题的暴力思路就是针对x到y这个范围里的每一个数进行判断,可以就输出

但是很容易看出,这个暴力会超时

所以就有了奇技淫巧

【思路】

我们预处理出范围内所有波浪数的波浪重数

这些波浪数我们可以主动去构造,这题中的波浪数其实拆开就是两个数字构成的,所有只需要枚举奇数位的i,和偶数位的j,i不能为0,然后最大为进制数-1

然后我们处理一下输入的范围x,y在p进制下的位数,并通过我们枚举的i,j和进制p构造位数在x,y之间的p进制数,接着把这个数转换成十进制,让这个波浪数的重数在十进制状态下+1,最后再十进制下枚举x,y之间的所有数,如果重数等于输入的s,就输出这个数

这个题的代码也不难,非常容易看懂滴

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<queue>
#define maxn 10000005
using namespace std; int num[maxn],ja,jb,x,y,s; int length(int n,int p){//数字n在p进制下的长度
int cnt=;
while(n){
n/=p;cnt++;
}return cnt;
} int make(int a,int b,int len,int p){
int now=;
for(int i=;i<=len;i++){
if(i&)now=now*p+a;
else now=now*p+b;
}return now;//转成10进制
} void work(int p){
int l=length(x,p),r=length(y,p);
for(int i=;i<p;i++){//首位不为0
for(int j=;j<p;j++){
if(i!=j){//波浪数的条件
for(int k=l;k<=r;k++){
int sum=make(i,j,k,p);
//构造波浪数并转换成十进制sum
if(sum>=x&&sum<=y)num[sum]++;
}
}
}
} } int main(){
scanf("%d%d%d%d%d",&ja,&jb,&x,&y,&s);
for(int i=ja;i<=jb;i++){
work(i);
}
for(int i=x;i<=y;i++){
if(num[i]==s){
printf("%d\n",i);
}
}
}

【总结】

遇见一看数据范围就很暴力的题,可以换角度下手,要么反向操作,或者预处理,或者构造满足条件的数

[vijos1162]波浪数的更多相关文章

  1. [RQNOJ313]波浪数

    题目描述 波浪数是在一对数字之间交替转换的数,如1212121,双重波浪数则是指在两种进制下都是波浪数的数,如十进制数191919是一个十进制下的波浪数,它对应的十一进制数121212也是一个波浪数, ...

  2. [Swust OJ 137]--波浪数(hash+波浪数构造)

    题目链接:http://acm.swust.edu.cn/problem/137/ Time limit(ms): 1000 Memory limit(kb): 65535   Description ...

  3. 洛谷 P1112 波浪数

    题目描述 波浪数是在一对数字之间交替转换的数,如 121212112121211212121 ,双重波浪数则是指在两种进制下都是波浪数的数,如十进制数 191919191919191919 是一个十进 ...

  4. CODEFORCES ROUND #273 DIV2

    题目大意: A简单的说就是,有五个人,他们刚开始有B元,经过一系列过程后,给你他们现在分别有的钱,让你求出B(> <难得的傻逼题啊...但是要注意B是正整数!特判0) B有n个人,要分成m ...

  5. 特效effects

    Test中使用的特效如下 首先,使用ccg(x,y)建grid,一个Grid 属性就好像一个矩阵,是一个网络的线,组成一系列的方块和矩阵. 一个(16,12)大小的grid将会运行的非常快,但是并不会 ...

  6. C++语言-02-函数

    普通函数 C++是在C语言的基础上增加了面向对象特性的语言,是C语言的超集 C++中的普通函数与C语言中的普通函数具有类似的性质.请参照以下博客:C语言-04-函数 与类相关的函数 C是一种OOP语言 ...

  7. iOS CAShapeLayer、CADisplayLink 实现波浪动画效果

    iOS CAShapeLayer.CADisplayLink 实现波浪动画效果 效果图 代码已上传 GitHub:https://github.com/Silence-GitHub/CoreAnima ...

  8. nopCommerce 3.9 大波浪系列 之 使用Redis主从高可用缓存

    一.概述 nop支持Redis作为缓存,Redis出众的性能在企业中得到了广泛的应用.Redis支持主从复制,HA,集群. 一般来说,只有一台Redis是不可行的,原因如下: 单台Redis服务器会发 ...

  9. RE : 球体波浪倒计时

    背景: 移动端需要做一个倒计时球体水波的效果.主要用到了CSS的SVG瞄点动画和JS的计时器.该动画原型来自于  使用球体水面波动显示进度动画 http://wow.techbrood.com/fid ...

随机推荐

  1. 干货--手把手撸vue移动UI框架: 滑动删除

    前言 前几天因为项目需要,用jquery写了一个swiperOut组件,然后我就随便把这个组件翻译成基于Vue的了,有兴趣的朋友可以看下.Github源码(不麻烦的话帮忙start,请各位大爷赏个星星 ...

  2. 基础JavaScript练习(二)总结

    任务目的 学习与实践JavaScript的基本语法.语言特性 练习使用JavaScript实现简单的排序算法 任务描述 基于上一任务 限制输入的数字在10-100 队列元素数量最多限制为60个,当超过 ...

  3. linux构建DHCP服务器

    1.DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作,主要用途:给内部网络或网络服务供应商自动分配IP地址 ...

  4. Serializable详解(1):代码验证Java序列化与反序列化

    说明:本文为Serializable详解(1),最后两段内容在翻译上出现歧义(暂时未翻译),将在后续的Serializable(2)文中补充. 介绍:本文根据JDK英文文档翻译而成,本译文并非完全按照 ...

  5. Idea - 常用基础配置

    前言 IntelliJ IDEA是我们开发常用的一大神器,深得众程序猿青睐,但是在使用过程中,有一些默认设置我们使用起来并不是很友好...这里就记录一些我使用的配置. 1.多行显示同时打开的多个文件 ...

  6. 单片机基础——使用GPIO扫描检测按键

    1. 准备工作 硬件准备 开发板首先需要准备一个小熊派IoT开发板,并通过USB线与电脑连接. 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码,可参考MDK安装教程 ...

  7. python 异步请求

    这是循环请求10次页面.总时间大概是10秒左右,如果是普通的循环请求10次页面而不添加异步的话,时间大概在30秒以上,当然这个数据可能有误,因为有网速的问题存在,但大体的效果应该是不变的. impor ...

  8. kafka集群搭建及结合springboot使用

    1.场景描述 因kafka以前用的不多,只往topic中写入和读取过数据,这次刚好又要用到,记录下kafka集群搭建及结合springboot使用. 2. 解决方案 2.1 简单介绍 (一)关于kaf ...

  9. webStorm ctrl+L 跳转到指定行line eclipes快捷键

    webStorm ctrl+L 跳转到指定行line eclipes快捷键

  10. 可运行jar包的几种打包/部署方式(转)

    转自:https://www.cnblogs.com/yjmyzz/p/executable-jar.html java项目开发中,最终生成的jar,大概可分为二类,一类是一些通用的工具类(不包含ma ...