• 爱奇艺2017秋招笔试(C++智能设备方向)


    虽然有方向,但是好像题目都是随机题库抽取。

    选择题都很基础。。。挖坑,待更新

    编程:

    一、 奇异数:

    如果一个数字满足以下条件,我们就称它为奇异数:

    1.   这个数字至少有两位

    2. 这个数的最低两位是相同的

    比如: 1488是一个奇异数,而3、 112 不是。

    牛牛现在给出一个区间[L, R], 让你计算出在区间内有多少个奇异数

    输入描述:

    输入包括两个正整数L和R(1<= L <= R <= 10^12),以空格分割。

    输出描述:

    输出一个正整数,即区间内奇异数的个数。

    思路:最直接的想法是暴力,直接对区间内的每个数进行判断,不过只能

    通过30%的case。所以要想办法优化,

    参考别人的一种想法是:只对一个数进行判断。即o(1)的时间,这就要求找出

    奇异数的规律。首先,以100为分界线,一部分分为:一个数除100后,有多少个100,就乘以10,因为

    100之内奇异数有10个。

    然后另一部分 是模100后的余数,要进行判断。

    比如1134这个数,  1134 /100 = 11,说明有  11个100,   11*10 = 110,

                                   而 1134 % 100 = 34.     34 又 分为两部分   11 、22  和 34

    贴代码:

    #include<bits/stdc++.h>
    using namespace std;
    
    typedef long long ll;
    ll computer(ll n){
        ll temp = n;
        ll count = 0;
        if (temp < 101){
            temp = (n / 10) % 10;
            count = temp - 1;
            if (n % 10 >= temp){
                count ++;
            }
        }
        return count;
    }
    ll qiyi(ll n){
        return computer(n % 100) + 10*(n / 100);
    }
    
    int main() {
        ll L,R;
        cin >> L >> R;
        cout << (qiyi(R)-qiyi(L-1))<<endl;
        return 0;
    }
    

      

  • 相关阅读:
    19-10-31-B
    19-10-30-Night-V
    19-10-30-C
    19-10-29-Night-X
    19-10-29-Z
    19-10-28-A
    19-10-27-S
    19-10-26-Night-D
    留言板
    优秀博客存档
  • 原文地址:https://www.cnblogs.com/simplepaul/p/7503497.html
Copyright © 2020-2023  润新知