zoukankan      html  css  js  c++  java
  • 校招真题练习002 被3整除(网易)

    被3整除

    小Q得到一个神奇的数列: 1, 12, 123,...12345678910,1234567891011...。
    并且小Q对于能否被3整除这个性质很感兴趣。
    小Q现在希望你能帮他计算一下从数列的第l个到第r个(包含端点)有多少个数可以被3整除。

    输入描述:
    输入包括两个整数l和r(1 <= l <= r <= 1e9), 表示要求解的区间两端。
    输出描述:
    输出一个整数, 表示区间内能被3整除的数字个数。

     1 inputval = list(map(int,input().split()))
     2 low,high = inputval[0],inputval[1]
     3 cnt = 0
     4 if (high - low) // 3 <= 1:
     5     for i in range(low,high+1):
     6         y = i % 3
     7         if y == 1:
     8             cnt += 0
     9         elif y == 0:
    10             cnt += 1
    11         else:
    12             cnt += 1
    13 else:
    14     z = (high - low) // 3
    15     z1 = (high - low + 1) // 3
    16     z2 = (high - low + 1) % 3
    17     if z2 == 0:
    18         cnt = z1 * 2
    19     else:
    20         l = low % 3
    21         if l == 1 or l == 2:
    22             cnt += 2
    23         elif l == 0:
    24             cnt += 1
    25         h = high % 3
    26         if h == 1:
    27             cnt += 0
    28         elif h == 2:
    29             cnt += 1
    30         else:
    31             cnt += 2
    32         cnt += (z-1) * 2
    33 print(cnt)

    题目类型:数学

    算法思想:位数 % 3有三种取值,

    值为1:不能整除,值为2:可以被整除,值为0:可以被整除。

    因此在low到high之间,以3个为一组,每组中有2个可以被3整除。再处理一下边缘值即可。

  • 相关阅读:
    Android 黑科技保活实现原理揭秘
    Flutter +携程=?
    图解设计模式-Prototype模式
    图解设计模式-Singleton模式
    比较B-tree索引与Hash索引
    类元数据Class Metadata
    DriverManager类
    XMLMapperBuilder类
    PooledDataSource类
    Java并发编程的艺术(笔记)
  • 原文地址:https://www.cnblogs.com/asenyang/p/11095096.html
Copyright © 2011-2022 走看看