[vijos1162]波浪数
题目链接: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]波浪数的更多相关文章
- [RQNOJ313]波浪数
题目描述 波浪数是在一对数字之间交替转换的数,如1212121,双重波浪数则是指在两种进制下都是波浪数的数,如十进制数191919是一个十进制下的波浪数,它对应的十一进制数121212也是一个波浪数, ...
- [Swust OJ 137]--波浪数(hash+波浪数构造)
题目链接:http://acm.swust.edu.cn/problem/137/ Time limit(ms): 1000 Memory limit(kb): 65535 Description ...
- 洛谷 P1112 波浪数
题目描述 波浪数是在一对数字之间交替转换的数,如 121212112121211212121 ,双重波浪数则是指在两种进制下都是波浪数的数,如十进制数 191919191919191919 是一个十进 ...
- CODEFORCES ROUND #273 DIV2
题目大意: A简单的说就是,有五个人,他们刚开始有B元,经过一系列过程后,给你他们现在分别有的钱,让你求出B(> <难得的傻逼题啊...但是要注意B是正整数!特判0) B有n个人,要分成m ...
- 特效effects
Test中使用的特效如下 首先,使用ccg(x,y)建grid,一个Grid 属性就好像一个矩阵,是一个网络的线,组成一系列的方块和矩阵. 一个(16,12)大小的grid将会运行的非常快,但是并不会 ...
- C++语言-02-函数
普通函数 C++是在C语言的基础上增加了面向对象特性的语言,是C语言的超集 C++中的普通函数与C语言中的普通函数具有类似的性质.请参照以下博客:C语言-04-函数 与类相关的函数 C是一种OOP语言 ...
- iOS CAShapeLayer、CADisplayLink 实现波浪动画效果
iOS CAShapeLayer.CADisplayLink 实现波浪动画效果 效果图 代码已上传 GitHub:https://github.com/Silence-GitHub/CoreAnima ...
- nopCommerce 3.9 大波浪系列 之 使用Redis主从高可用缓存
一.概述 nop支持Redis作为缓存,Redis出众的性能在企业中得到了广泛的应用.Redis支持主从复制,HA,集群. 一般来说,只有一台Redis是不可行的,原因如下: 单台Redis服务器会发 ...
- RE : 球体波浪倒计时
背景: 移动端需要做一个倒计时球体水波的效果.主要用到了CSS的SVG瞄点动画和JS的计时器.该动画原型来自于 使用球体水面波动显示进度动画 http://wow.techbrood.com/fid ...
随机推荐
- 7-4 jmu-python-判断是否构成三角形 (10 分)
7-4 jmu-python-判断是否构成三角形 (10 分) 输入三角形的三边,判断是否能构成三角形.若能构成输出yes,否则输出no. 输入格式: 在一行中直接输入3个整数,3个整数之间各用一 ...
- JZOJ 5326. LCA 的统计 (Standard IO)
5326. LCA 的统计 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Description Input Output S ...
- 关于有趣的windows.h
system 函数: 这个函数差不多就是调用 cmd (命令提示符). 当然,不一定要在程序中调用,用 txt 打入文本( 不用加system() )后改后缀名为 cmd 后运行即可. Win 键 + ...
- 负载均衡框架 ribbon 三
Ribbon 在 SpringCloud 中的使用 1.构建 Eureka 注册中心 smart-platform-eureka1 (1)导入jar包 <properties> <p ...
- node打开本地应用程序
1.打开浏览器 最简单的方法: const cp = require('child_process') cp.exec('start http://127.0.0.1:8889/'); // 自动打开 ...
- Python 执行 javascript PyExecJS 模块
PyExecJS 安装 pip install PyExecJS PyExecJS 的基本使用: >>> import execjs >>> execjs.eval ...
- dpdk中QSBR具体实现
目录 dpdk-QSBR实现 初始化 注册与注销 上线与下线 等待静默 附录 参考 dpdk-QSBR实现 dpdk19.01提供了qsbr模式的rcu库,其具体实现在lib/librte_rcu目录 ...
- 学习Shader所需的数学基础(坐标系,点和矢量)
数学对于计算机图形学的重要性是不言而喻的.在学习Shader之前,首先就要打好数学基础,好在入门Unity Shader所需的数学知识都是线性代数中很基础的的内容.按部就班的来,第一篇文章记录总结的是 ...
- 表单配置项写法,表单写成JSON数组套对象,一行是一个数组单位,一列是一个对象单位,然后再写一个公共组件读取这个配置,循环加载slot,外层载入slot的自定义部分,比如input select等,这种写法就是把组件嵌套改为配置方式
表单配置项写法,表单写成JSON数组套对象,一行是一个数组单位,一列是一个对象单位,然后再写一个公共组件读取这个配置,循环加载slot,外层载入slot的自定义部分,比如input select等,这 ...
- Linux 应用领域
与Windows操作系统软件一样,Linux也是一个操作系统软件.但与Windows不同的是,Linux是一套开放源代码程序的,并可以自由传播的类UNIX操作系统软件,随着信息技术的更新变化,Linu ...