奇怪数(odometer)

【题目描述】

一个正整数Z是奇怪数,当且仅当满足的条件是:Z的所有数字中,只有一个数字不同于其他数字。例如:33323、110 都是奇怪数,而 9779、5555 都不是奇怪数。给出两个正整数 X 和 Y,满足 100 <= X <= Y <= 10^16,请问区间[X,Y]内有多少个奇怪数?

【输入格式】odometer.in

一行,两个整数,X 和 Y。

【输出格式】odometer.out

一个整数。【输入样例】

110 133

【输出样例】

13

【样例解释】

110,112,113,114,115,116,117,118,119,121,122,131,133 都是奇怪数。

【解题思路】

基本思路是枚举,但是如果按照正常方法进行枚举,那么依照本题的数据范围,必然会超过时间限制。显然,需要另外寻找一条路进行枚举。

根据题面可知,奇怪数是由a,b两个数字组成,但是其中b只能出现一次。所以,我们可以尝试枚举a和b,构成奇怪数。在构成奇怪数之后,判断是否在x和y的范围内即可。

【解题反思】

  • 可以尝试从问题的另一面入手解决问题。
  • 注意奇怪数的定义,由两个数字组成,但是其中有一个数字只能出现一次,9559,633663这些就不是奇怪数。

【参考程序】

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
long long len,x,y;
long long count(long long num)
{
string st="",s="";
int ansc=0;
while (num!=0)
{
st=char(num%10+48)+st;
num/=10;
}//将数字转化为字符串 以便求出长度
len=st.size();
for (int i=3;i<=len;i++)//枚举奇怪数的长度
for (char j='0';j<='9';j++)//枚举奇怪数中重复出现的数字
{
s="";
for (int k=0;k<i;k++) s+=j;//填充奇怪数
for (char l='0';l<='9';l++)//枚举奇怪数中只出现一次的数字
if (j!=l)//两数不相同才有意义
for (int m=0;m<i;m++)//枚举奇怪数中只出现一次的数字的位置
{
s[m]=l;//填充
if (s[0]!='0'&& (s<=st||i<len)) ansc++;//判断是否在范围内
s[m]=j;
}
}
return ansc;
}
int main()
{
freopen("odometer.in","r",stdin);
freopen("odometer.out","w",stdout);
cin>>x>>y;
cout<<count(y)-count(x-1);//利用子程序求出100~y之间的奇怪数,再求出 100~(x-1)的奇怪数
//两者相减即为x~y的奇怪数
return 0;
}

【集训Day1 测试】奇怪数的更多相关文章

  1. 中山纪中集训Day1测试(摸鱼)

    AT3 粉刷匠 Description 赫克托是一个魁梧的粉刷匠,而且非常喜欢思考= = 现在,神庙里有N根排列成一直线的石柱,从1到N标号,长老要求用油漆将这些石柱重新粉刷一遍.赫克托有K桶颜色各不 ...

  2. 【集训Day1 测试】选择课题

    选择课题(bestproject) [问题描述] Robin 要在下个月交给老师 n 篇论文,论文的内容可以从 m 个课题中选择.由于课题数有限,Robin 不得不重复选择一些课题.完成不同课题的论文 ...

  3. 【集训Day1 测试】装饰

    装饰(decorate) [题目描述] 一个图有 N 个结点,编号 1 至 N,有 M 条无向边,第 i 条边连接的两个结点是 Ai 和Bi,其中 Ai 和 Bi 是不同的结点.可能有多条边连接的是同 ...

  4. 【集训Day1 测试】【USACO】照相

    照相(fairphoto) [题目描述] 有N 头奶牛站在一条数轴上,第 i 头奶牛的位置是 Pi,奶牛不会重叠站在同一个位置, 第i 头奶牛的颜色是 Ci,其中 Ci 要么是字符'G'要么是字符'H ...

  5. 国庆集训 Day1 T2 生成图 DP

    国庆集训 Day1 T2 生成图 现在要生成一张\(n\)个点的有向图.要求满足: 1.若有 a->b的边,则有 b->a 的边 2.若有 a->b 的边和 b->c 的边,则 ...

  6. 2019暑期金华集训 Day1 组合计数

    自闭集训 Day1 组合计数 T1 \(n\le 10\):直接暴力枚举. \(n\le 32\):meet in the middle,如果左边选了\(x\),右边选了\(y\)(且\(x+y\le ...

  7. 2019暑期金华集训 Day1 数据结构

    自闭集训 Day1 数据结构 CF643G 用类似于下面的方法,搬到线段树上. 如何合并两个集合?先全部放在一起,每次删掉最小的\(cnt_i\),然后把其他所有的\(cnt\)都减去\(cnt_i\ ...

  8. LOJ 6060「2017 山东一轮集训 Day1 / SDWC2018 Day1」Set(线性基,贪心)

    LOJ 6060「2017 山东一轮集训 Day1 / SDWC2018 Day1」Set $ solution: $ 这一题的重点在于优先级问题,我们应该先保证总和最大,然后再保证某一个最小.于是我 ...

  9. 暑假集训Day1 整数划分

    题目大意: 如何把一个正整数N(N长度<20)划分为M(M>=1)个部分,使这M个部分的乘积最大.N.M从键盘输入,输出最大值及一种划分方式. 输入格式: 第一行一个正整数T(T<= ...

随机推荐

  1. LeetCode 十月份题目汇总

    开源地址:点击该链接 前言 十月份共有60道题目,全部属于 Easy 难度的,所以公众号中分享出来的并不多,只是挑了一些感觉还可以的才分享了出来,这60道题目我按照不同类别进行了分类整理,所有源码以及 ...

  2. django-模板之comment标签(六)

    index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  3. Mysql 性能优化及问题

    MySQL max_allowed_packet设置及问题 查看 max_allowed_packet show VARIABLES like '%max_allowed_packet%'; 以下内容 ...

  4. 框架搭建与EF常用基类实现

    前两篇简单谈了一些.Net Core的优势以及机构设计的一些思路,这一篇开始,我们将从零开始搭建架构,底层我们将采用EF来访问数据库,所以这篇我们将贴一下EF常用操作的基类. 简单介绍下一些类库将要实 ...

  5. 什么是浮点型?什么是单精度浮点数(float)以及双精度浮点数(double)?

    前言 作为一名java学习者,怎能不懂这些java基础中的基础呢?本文就带各位温顾温顾java浮点型.单精度浮点数.双精度浮点数. 浮点型 首先明确java中浮点型数据类型主要有:单精度float.双 ...

  6. 前端技术之:常用webpack插件

    1.html-webpack-plugin Simplifies creation of HTML files to serve your webpack bundles.   主页地址: https ...

  7. linux 编译引用动态库时,报GLIBC_2,14 not found的处理方法

    这种错误一般是其引用的libc.so,其中含有版本较高的函数导致. 查看及解决办法: objdump -p ./libdmapi.so 显示: version References: ... requ ...

  8. 股票交易——单调队列优化DP

    题目描述 思路 蒟蒻还是太弱了,,就想到半个方程就GG了,至于什么单调队列就更想不到了. $f[i][j]$表示第$i天有j$张股票的最大收益. 那么有四种选择: 不买股票:$f[i][j]=max( ...

  9. 一文学会Go语言

    go语言随手记 -- go语言定位于高并发服务端程序 1.基本数据类型 boolstringint int8 int16 int32 int64uint uint8 uint16 uint32 uin ...

  10. svg路径蒙版动画

    svg路径蒙版动画,是比较实用的一种动画效果,能够绘制如下图所示的动画. 接下来细说这样的动画是如何做成的: 1.准备工作 2.SVG路径动画 3.SVG路径蒙版动画 4.复杂图形的编辑技巧 1.准备 ...