zoukankan      html  css  js  c++  java
  • 纪中第五天(c组)(3)

    题目

    有一把幸运锁,打开它将会给你带来好运,但开锁时需要输入一个正整数(没有前导0)。幸运锁有一种运算,对于一个正整数,返回他的相邻两位数字间的差,如1135,运算结果为22(会去掉前导0)。
    现在已知只有经过反复运算最终结果为7的数才能打开这把锁,给你一个区间[a,b],问该区间中有多少个能打开幸运锁的幸运数。

    输入

       第一行两个整数a,b。

    输出

       一个整数K,表示共有多少个这样的数。

    样例输入

    1 10

    样例输出

    1

    数据范围限制

    【限制】
    1<=a<=b<=10^9。
    30%的数据有b<=10^6。

    思路

    这题目前所知的唯一满分方法为打表(仅限于Pascal,C++会完美无比的爆掉!!!)。我的方法是宽搜,每回从第一位拆起,直到num<10。

    代码

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int k=0,num1,n,a,b,c,sum=0,d,e,num2,g,i,h;
    void dfs(int num)
    {
        num2=0;
        c=0;
        if(num==7)
            sum++;
        if(num<10)
            return;
        while(num/10!=0)
        {
            h=num%10;
            num=num/10;
            d=num%10;
            e=abs(d-h);
            if(c!=0)
                c=c*10;
            else
                c=1;
            num2=num2+e*c;
        }
        dfs(num2);
    }
    int main()
    { 
        scanf("%d%d",&a,&b);
        if(a>b)
            swap(a,b);
        for(i=a;i<=b+1;i++)
            dfs(i);
        printf("%d",sum);
        return 0;
    }
  • 相关阅读:
    阿里云磁盘扩容
    【Vue】WebPack 忽略指定文件或目录
    MySQL 全文索引 (FullText)
    产品设计
    13-Java面向对象-抽象类与接口
    06-数据存储
    07-网络与通信-02-Android中基于HTTP的通信技术
    10-Android 广播接收器 BroadcastReceiver
    09-Android 中 AIDL 的理解与使用
    09-Android 中 AIDL 的理解与使用
  • 原文地址:https://www.cnblogs.com/abcdhh/p/11311368.html
Copyright © 2011-2022 走看看