奇怪数(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. (乱入)FingerGesture

    偶然的机会遇到FingerGesture插件,此插件也有很多方便的功能,比如控制主相机查看模型以及缩放等功能,如Component-FingerGestures-Toolbox-Camera-Orbi ...

  2. 详细讲解CSS中相对定位relative和绝对定位absolute

    很多朋友问过我absolute与relative怎么区分,怎么用?我们都知道absolute是绝对 定位,relative是相对定位,但是这个绝对与相对是什么意思呢?绝对是什么地方的绝对,相对又是相对 ...

  3. Unity中的资源管理

    一.AssetBundle 相关 Q1:Unity中的SerializedFile是怎么产生的?请问用Unload(false)可以清除吗?因为读取了Bundle里面的内容后已经赋值给其他物体了.而且 ...

  4. Hibernate 查询方式、JPA查询方式

    hibernate 查询方式: OID 查询 对象导航查询 HQL 方式查询 QBC方式查询 原生SQL方式查询 JPA 查询方式: OID 查询 对象导航查询 JPQL 方式查询 CriteriaB ...

  5. java 调用启动远程shell脚本,启动spark

    1 依赖 <!--远程调用shell--> <dependency> <groupId>ch.ethz.ganymed</groupId> <ar ...

  6. 20190728_收集的一些链接_关于opencv

    https://softwarebydefault.com/tag/pixel-neighbourhood-max/ https://www.cnblogs.com/happystudyeveryda ...

  7. Knative Serving 健康检查机制分析

    作者|  阿里云智能事业群技术专家牛秋霖(冬岛) 导读:从头开发一个Serverless引擎并不是一件容易的事情,今天咱们就从Knative的健康检查说起.通过健康检查这一个点来看看Serverles ...

  8. 学习笔记45_log4net日志

    1.配置添加一个App.config *对于网站,就使用web.config ***对于App.config和web.config的配置,在表现形式上是不一致的,使用的时候应该在网上查对于的配置设置. ...

  9. 网站安全配置Nginx防止网站被攻击

    https://blog.csdn.net/u011078940/article/details/51426288

  10. UWP 带左右滚动按钮的横向ListView———仿NetFlix首页河的设计

    也是之前写的控件了,模仿NetFlix的河的设计. 大体要求如下: 1. 横向的ListView 2. 左右按钮,可以左右移动河卡片,左右的滚动条不可见 3. 左右按钮仅在鼠标Hover事件中可见 大 ...