幸运数字8 - LintCode

204 篇文章 0 订阅

描述
8是小九的幸运数字,小九想知道在1~n的数中有多少个数字含有8。

1 <= n <= 1000000

样例
给出 n = 20, 返回2。

解释:
只有8,18 含有8。

给出 n = 100, 返回19。

解释:
有8,18,28,38,48,58,68,78,80,81,82,83,84,85,86,87,88,89,98。

思路
判断数字n是否含有8,如果n不为0,先判断其个位,如果不是n=n/10。对于一个包含8的数字i,下一个包含8的数字只可能是i+1(81–82),i+2(78–80),i+9(89–98)或者i+10(8–18)。

#ifndef C1385_H
#define C1385_H
#include<iostream>
using namespace std;
class Solution {
public:
    /**
    * @param n: count lucky numbers from 1 ~ n
    * @return: the numbers of lucky number
    */
    int luckyNumber(int n) {
        // Write your code here
        if (n <= 7)
            return 0;
        int num = 1;
        int i = 8;
        //下一个含有8的数字出现情况只可能比现在的数字大1,2,9或10
        while (i <= n)
        {
            if (hasEight(i+1))
            {
                i += 1;
                num++;
            }
            else if (hasEight(i + 2))
            {
                i += 2;
                num++;
            }
            else if (hasEight(i + 9))
            {
                i += 9;
                num++;
            }
            else if (hasEight(i + 10))
            {
                i += 10;
                num++;
            }
        }
        return --num;
    }
    //判断数字中是否有8
    bool hasEight(int n)
    {
        while (n)
        {
            if (n % 10 == 8)
                return true;
            n = n / 10;
        }
        return false;
    }
};
#endif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
西安电子科技大学 《数字电子技术》课程设计 题 目 电子幸运转盘设计 学生姓名 专业班级 11级通信2班 学 号 2 院 (系) 信息工程学院 指导教师 电子幸运转盘设计-全文共8页,当前为第1页。完成时间 2013年11月28日 电子幸运转盘设计-全文共8页,当前为第1页。 目 录 1 课程设计的目的……………………………………… …………1 2 课程设计的任务与要…………………………………………2 3 设计方案与论证……………………………………………………3 方案设计…………………………………………………3 方案论证…………………………………………………4 4 设计原理及功能说明 ……………………………………………5 5单元电路的设计……………………………………………………5 6 硬件的制作与调试……………………………………………………5 7 总结 …………………………………………………………………10 参考文献…………………………………………………………………15 附录1:总体电路原理图……………………………………………18 电子幸运转盘设计-全文共8页,当前为第2页。附录2:元器件清单…………………………………………………19 电子幸运转盘设计-全文共8页,当前为第2页。 1课程设计的目的 2 课程设计的任务与要 3 设计方案与论证 根据电子幸运转盘的功能要,将电路划分为四个单元功能模块,即时钟信号发生模块、译码驱动LED数码管显示模块、十进制计数模块和开关等逻辑控制。 方案设计 本电路由555成的多谐振荡器和CD4017十进制计数器/脉冲分配器组成。10颗发光二极管模拟幸运物,当按下启动键1秒以上,发光二极管高速循环点亮,几秒钟后旋转速度越来越慢并最终随机停止于某颗灯上。可以将每颗灯旁边标上幸运物品作为摇奖器。C1的数值决定延迟时间,C2的数值决定循环速度。电源供电电压为直流5V,也可以采用3节电池供电。电子幸运转盘设计方框图如图3-1所示。 按钮式启动开关电容式放点计时 器555集成电路多谐振荡器4017集成电路十进制计数器发光二极管1-10显示 按钮式启动开关 电容式放点计时 器 555集成电路多谐振荡器 4017集成电路十进制计数器 发光二极管1-10显示 电子幸运转盘设计-全文共8页,当前为第3页。图3-1电子幸运转盘系统方框图 电子幸运转盘设计-全文共8页,当前为第3页。 方案论证 4 设计原理及功能说明 电路设计原理 脉冲产生器由NE555及外围元件构成多谐振荡器,当按下按键S1时Q1导通,NE555的3脚输出脉冲,则CD4017的10个输出端轮流输出高电平驱动10只LED轮流发光。松开按键后,由于有电容C1的存在,Q1不会立即截止,随着C1两端电压的下降,Q1的导通程序逐渐减弱,3脚输出脉冲的频率变慢,LED移动频率也随之变慢。最后当C1放电结束后。Q1截止,NE555的3脚不再输出脉冲,LED停止移动。一次"开奖"过程就这样完成了。R2决定LED移动速度,C1决定等待"开奖"的时间。 功能说明 5 单元电路的设计 CD4017与NE555的原理 5.1.1 CD4017工作原理 电子幸运转盘设计-全文共8页,当前为第4页。 CD4017是一个十进制数集成电路,是十进制计数器/脉冲分配器,它的内部由计数器及译码器两部分组成。16脚以及8脚分别为正负极电源接脚,可在3-18V下工作。14是时钟脉冲输入端,每当输入由低电位(约0V)转高电位时令输出端依次序轮流输出高电位。13端是时钟脉冲控制端,一般接低电位,若接高电位会使14端暂停作用。15端是置零端,一般接零电位,若接高单位则是输出置零,即Q0输出端永远为高单位,12端是进位端,用来接下一个十进计数器,变成双位计数器,本电路不用,故空接。CD4017的内部结构图如图所示。 电子幸运转盘设计-全文共8页,当前为第4页。 5.1.2 NE555工作原理 555定时器由3个阻值为5kΩ的电阻组成的分压器、两个电压比较器C1和C2、基本RS触发器、放电三极管TD和缓冲反相器G4组成。虚线边沿标注的数字为管脚号。其中,1脚为接地端;2脚为低电平触发端,由此输入低电平触发脉冲;6脚为高电平触发端,由此输入高电平触发脉冲;4脚为复位端,输入负脉冲(或使其电压低于)可使555 定时器直接复位;5脚为电压控制端,在此端外加电压可以改变比较器的参考电压,不用时,经的电容接地,以防止引入干扰;7脚为放电端,555定时器输出低电平时,放电晶体管TD导通,外接电容元件通过TD放电;3脚为输出端,输出高电压约低于电源电压1V-3V,输出电流可达200mA,因此可直接驱动继电器、发光二极管、指示灯等;8脚为电源端,可在5V-18V范围内使用。NE555的内部电路如图所示。 C

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值