首页 > 其他分享 >从右边开始寻找整数的第k位

从右边开始寻找整数的第k位

时间:2024-02-22 12:22:05浏览次数:27  
标签:digits 10 右边 False 1010 寻找 整数 True match

从右边开始寻找整数的第k位

Implement match_k, which takes in an integer k and returns a function that takes in a variable x and returns True if all the digits in x that are k apart are the same.

For example, match_k(2) returns a one argument function that takes in x and checks if digits that are 2 away in x are the same.

match_k(2)(1010) has the value of x = 1010 and digits 1, 0, 1, 0 going from left to right. 1 == 1 and 0 == 0, so the match_k(2)(1010) results in True.

match_k(2)(2010) has the value of x = 2010 and digits 2, 0, 1, 0 going from left to right. 2 != 1 and 0 == 0, so the match_k(2)(2010) results in False.

Important: You may not use strings or indexing for this problem.

Floor dividing by powers of 10 gets rid of the rightmost digits.

def match_k(k):
    """Returns a function that checks if digits k apart match.

    >>> match_k(2)(1010)
    True
    >>> match_k(2)(2010)
    False
    >>> match_k(1)(1010)
    False
    >>> match_k(1)(1)
    True
    >>> match_k(1)(2111111111111111)
    False
    >>> match_k(3)(123123)
    True
    >>> match_k(2)(123123)
    False
    """
    def check(x):
        while x // (10 ** k) > 0:
            if (x % 10) != (x // (10 ** k)) % 10:
                return False
            x //= 10
        return True
    return check

分析:

  1. 判断最后一位与右边数第k位数字是否相同:(x % 10) != (x // (10 ** k)) % 10
  2. 如果不相同,则这个数肯定不符合题目要求,直接返回False
  3. 如果相同,则将比较位置转为左手边的下一个数字:x //= 10

标签:digits,10,右边,False,1010,寻找,整数,True,match
From: https://www.cnblogs.com/shangshankandashu/p/18027058

相关文章

  • vue3 ts用正则表达式校验两位小数和校验整数的方法
    <el-col:span="12"><el-form-itemlabel="贷款金额"prop="loanAmount"><el-input-numberv-model="props.loanAmount":min="0"@change="checkIntegerNumber('loanAmount')"controls......
  • 无符号整数和浮点数的文法
    目录无符号整数的文法浮点数的文法在编写无符号整数(UnsignedInteger)和浮点数(FloatingPointNumber)的文法时,我们通常使用BNF(巴科斯-瑙尔范式)或EBNF(扩展巴科斯-瑙尔范式)等描述形式语言的工具。这些工具提供了一种简洁的方式来定义语法规则。以下是无符号整数和浮点数的一种可能......
  • 整数乘法的长征
    可以点开pdf.问题和计算模型整数乘法无疑是再熟悉不过的问题了,但是出于严谨性,我们先在本文开头明确一下问题以及计算模型.输入为两个非负整数\(a,b\),它们都是\(n\)位的二进制数.我们的目标是计算它们的乘积\(a\cdotb\),也是按顺序输出它的各位数码.原则上说,......
  • 请编写函数fun,它的功能是:求出1到100之内能被7或者11整除, 但不能同时被7和11整除的所有
    /2.请编写函数fun,它的功能是:求出1到100之内能被7或者11整除,但不能同时被7和11整除的所有整数,并将他们放在a所指的数组中,通过n返回这些数的个数/#include<stdio.h>#include<string.h>intfun(int*buf){inti=1,j=0;for(i=1;i<100;i++){if(i%7==......
  • 在涉及恶意软件的任何调查中,寻找持久性点(也称为“自动启动扩展点”或ASEP)是一项经常出
    AutostartcategoriesWhenyoulaunchAutorunsforthefirsttime,allautostartentriesonthesystemaredisplayedinonelonglistontheEverythingtab.As Figure4-8 shows,thedisplayincludesupto19othertabsthatbreakdownthecompletelistint......
  • 整数划分 题解
    题目描述如何把一个正整数N(N长度<20)划分为M(M>1)个部分,使这M个部分的乘积最大。N、M从键盘输入,输出最大值及一种划分方式。输入格式第一行一个正整数T(T<=10000),表示有T组数据。接下来T行每行两个正整数N,M。输出格式对于每组数据第一行输出最大值。第二行输出划分方案,将N按......
  • 所有十进制数位中不含2的正整数的倒数和
    \(x\ge1\),首先证明个简单的引理:\[\frac1x>\frac9{10}(\sum_{i=0}^9\frac1{10x+i}-\frac1{10x+2})\]不妨设\[f(x)=\frac1x((\sum\limits_{i=0}^9\frac1{10x+i})-\frac1{10x+2})\\f(x)=\frac{4536+211284x+2812995x^2+17430700x^3+59386250x^4+11......
  • 【C++】假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。
    题目:假设链表中每一个节点的值都在0-9之间,那么链表整体就可以代表一个整数。给定两个这种链表,请生成代表两个整数相加值的结果链表。数据范围:0≤n,m≤1000000,链表任意值0≤val≤9要求:空间复杂度O(n),时间复杂度O(n)例如:链表1为9->3->7,链表2为6->3,最后生成新的结果链表......
  • C语言解题 || 调整数列
    题目:有n个整数,使其前面各数顺序向后移m个位置,移出的数再从头移入,使得最后m个数变成前面m个数。例:设n为6,m为2,当n个数为{1,2,3,4,5,6},函数使之变为{5,6,1,2,3,4}编写一个函数move,实现以上功能,该函数的声明如下:voidmove(int*x,intn,intm)实现思想:拿出最后一个数,然后其他数字......
  • C++编程练习||1.类模板2.整数集合类3.复数集合类,模板结合
    1.类模板 类模板的作用  使用类模板使用户可以为类声明一种模式,使得类中的某些数据成员、某些成员函数的参数、某些成员函数的返回值,能取任意类型(包括基本类型的和用户自定义类型)。  类模板的声明  类模板template<模板参数表>class类名{类成员声明};  ......