题目链接: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,就输出这个数

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

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<cstdlib>
 5 #include<cmath>
 6 #include<algorithm>
 7 #include<queue>
 8 #define maxn 10000005
 9 using namespace std;
10
11 int num[maxn],ja,jb,x,y,s;
12
13 int length(int n,int p){//数字n在p进制下的长度
14     int cnt=0;
15     while(n){
16         n/=p;cnt++;
17     }return cnt;
18 }
19
20 int make(int a,int b,int len,int p){
21     int now=0;
22     for(int i=1;i<=len;i++){
23         if(i&1)now=now*p+a;
24         else now=now*p+b;
25     }return now;//转成10进制
26 }
27
28 void work(int p){
29     int l=length(x,p),r=length(y,p);
30     for(int i=1;i<p;i++){//首位不为0
31         for(int j=0;j<p;j++){
32             if(i!=j){//波浪数的条件
33                 for(int k=l;k<=r;k++){
34                     int sum=make(i,j,k,p);
35                                         //构造波浪数并转换成十进制sum
36                     if(sum>=x&&sum<=y)num[sum]++;
37                 }
38             }
39         }
40     }
41
42 }
43
44 int main(){
45     scanf("%d%d%d%d%d",&ja,&jb,&x,&y,&s);
46     for(int i=ja;i<=jb;i++){
47         work(i);
48     }
49     for(int i=x;i<=y;i++){
50         if(num[i]==s){
51             printf("%d\n",i);
52         }
53     }
54 }    

View Code

【总结】

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

转载于:https://www.cnblogs.com/Danzel-Aria233/p/7729008.html

[vijos1162]波浪数相关推荐

  1. [RQNOJ313]波浪数

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

  2. HDU 4489 找出n!个全排列数中的“波浪数” dp 思维,全排列

    这题关键还是在于找出dp的转移方程,这题是从第n个数在前n-1个数的位置中入手,然后把"波浪数"分成两派.理解起来不困难,但是要自己想到的话,其中的思维一片也不能断掉,尤其是要找到 ...

  3. [Unity实战]制作卷动的波浪

    参考链接:http://tieba.baidu.com/p/2655013091#40457365538l 效果图: 这里,我们制作的波浪是通过改变mesh上的顶点来实现的.更准确的说,是改变mesh ...

  4. Unity 水、流体、波纹基础系列(三)——波浪(Waves)

    目录 1 正弦波 1.1 调整顶点 1.2 调整Y 1.3 振幅 1.4 波长 1.5 速度 1.6 法线向量 1.7 Mesh分辨率 1.8 阴影 2 格斯特纳波(Gerstner) 2.1 来回移 ...

  5. cocos2d-x初探学习笔记(8)--场景特效

    小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 如何让场景中的所有都受一个动作特效的影响呢?可 ...

  6. HDU 6078Wavel Sequence

    [题目链接]http://acm.hdu.edu.cn/showproblem.php?pid=6078 题目意思 给定两个数组问你同时满足波浪的波浪数.不理解可以看题目提示部分 解题思路 首先从a数 ...

  7. HDU 6078 Wavel Sequence【动态规划】

    题目来戳呀 Problem Description Have you ever seen the wave? It's a wonderful view of nature. Little Q is ...

  8. php k线15分钟 30分钟,15分钟30分钟K线战法

    A.一种利用均线,你在15分钟K线图上设置一根21天均线及一根5天均线,当你看到5天上穿21天均线时那就是买入信号:卖出方法有两种:一般情况下,看到5天均下穿21天均线就要坚决离场:特殊情况下,如该股 ...

  9. echarts水波球特效(附带外边框进度条)

    echarts水波球特效(附带外边框进度条) 1.话不多说先上效果图 2.这里用到了echarts的liquidFill图表,需要加载liquidFill插件 npm i echarts-liquid ...

最新文章

  1. 死前真的会有「跑马灯」,人类首次同步测量大脑濒死状态
  2. richTextBox1 转到行号
  3. SQL 触发器的使用
  4. 手机1像素线粗_小米1亿像素手机配置全曝光:史上最炫酷呼吸灯!
  5. 可以使用计算机解决的问题是什么,1.1 使用计算机解决问题的一般过程教案1
  6. c# DataTable DataBinding 应用笔记
  7. 关于qq创始人----马化腾的一些琐事
  8. PHP检测每一段代码执行时间
  9. THINK PHP 学习笔记20171115
  10. runloop的mode作用是什么?
  11. 【问题解决方案】从 Anaconda Prompt 或 Jupyter Notebook 终端进入Python后重新退出到命令状态...
  12. OOP之C#设计及其UML(反向工程)
  13. 查看oracle数据库版本
  14. 谷歌测试工具_使用Google网站优化工具进行A / B测试的指南
  15. 算法刷题路线总结与相关资料分享
  16. 基于MTK65xx平台lcm和背光驱动的编写
  17. [c语言]倒置字符串 -牛客网
  18. SpringBoot 自定义全局异常处理器
  19. 植物大战僵尸设计元素浅析
  20. 无心剑英译紫穗穗《熵》

热门文章

  1. 营销型成人高考自考百度竞价推广落地页源码 单页织梦模板 带手机版
  2. 全开源智睿企业网站管理系统 v11.1.0源码
  3. Resi图片博客WordPress主题
  4. sqlserver文件转mysql_怎样将Sqlserver数据库转成mysql数据库
  5. Wordpress婚庆婚纱摄影工作室企业网站主题模板
  6. EasyImage图床源码V2.0
  7. 简约的PHP留言板开源版网站源码
  8. 浅析BMP位图文件结构(含Demo)[转]
  9. 应用程序池 应用池即应用程序池:
  10. 基本的SVG样式属性