zoukankan      html  css  js  c++  java
  • HackerRank刷题之路之---Algorithm(基于Python2)(持续更新)

    Lisa's Workbook:

     此题整体不难,只是在代码实现的时候易错,需要搞清楚好几层逻辑关系。

    有一本书,有n个章节,每个章节有一定数量的题目,每一章的题目从1开始索引,每一页上最多有k道题目,仅在某一章节结束的时候开启新的一页,页码从1开始,统计题目的索引数与页码数相同的题目的个数。

    Python2代码如下:

    n,k = map(int,raw_input().split())
    arr = map(int,raw_input().split())
    one_p,special,i = [0]*3
    p,c = [1]*2
    while True:
        i += 1
        one_p += 1
        if i == p: special += 1
        if i == arr[n-1] and c == n: break
        if i == arr[c-1]:
            c += 1
            i = 0
            one_p = 0
            p += 1
        if one_p == k:
            one_p = 0
            p += 1
    print special

     从此题目中获得启示,在有多重逻辑判定的时候,需要提前想好逻辑判断的先后顺序,一般是由大到小逐个判断,同时要搞清楚每一次判定成功后,需要改变的量是哪些。此题中先判断全书是否结束,然后是章节是否结束,最后判断本页是否结束。

     Find Digits:

    将一个整数的每一位数字取出来,然后统计这里面有几个可以整除这个整数。记录这个题目主要是记录一个小技巧,此题本身很简单,但是用Python可以更简洁:

    for i in xrange(input()):
        s = raw_input().strip()
        print sum([1 if int(s)%x == 0 else 0 for x in [x for x in map(int,s) if x > 0]])

    真正起作用的代码其实只有一行~这就是列表解析的强大之处。

  • 相关阅读:
    decltype类型指示符
    vector的使用
    参数使用
    CSPS模拟 43
    CSPS模拟 41
    CSPS模拟 42
    NOIP模拟 40
    NOIP模拟 39
    NOIP模拟 38
    NOIP模拟 37
  • 原文地址:https://www.cnblogs.com/dn-harris/p/5972363.html
Copyright © 2011-2022 走看看