• 发现牛客网的考研题不错,赶紧刷刷


      

     

    题目:

    #下面这一段用一个txt来保存input的信息来模拟input.最后提交代码时候删除这一段即可.
    a9999=open('1.txt','r')
    def input():
        return a9999.readline()
    
    
    
    
    
    
    while 1:
     try:
        a=int(input())
        b=int(input())
        if b==0:
            c='降序'
        else:
            c='升序'
        out=[]
        if b==0:
            for i in range((a)):
                tmp=input().split()
                name=tmp[0]
                score=tmp[1]
                out.append((name,score))
            out2=[]
            while len(out)>0:
                i=0
                for j in range(len(out)):
                    if int(out[j][1])>int(out[i][1]):
                        i=j
                out2.append(out[i])
                out.pop(i)
    
            for i in range(len(out2)):
                    print(out2[i][0]+' '+out2[i][1])
        else:
            for i in range((a)):
                tmp=input().split()
                name=tmp[0]
                score=tmp[1]
                out.append((name,score))
            out2=[]
            while len(out)>0:
                i=0
                for j in range(len(out)):
                    if int(out[j][1])<int(out[i][1]):
                        i=j
                out2.append(out[i])
                out.pop(i)
    
            for i in range(len(out2)):
                    print(out2[i][0]+' '+out2[i][1])
     except:
         break
    
        
    View Code

    View Code

    '''
    题目描述
    输入n个整数,依次输出每个数的约数的个数
    输入描述:
    输入的第一行为N,即数组的个数(N<=1000)
    接下来的1行包括N个整数,其中每个数的范围为(1<=Num<=1000000000)
    当N=0时输入结束。
    输出描述:
    可能有多组输入数据,对于每组输入数据,
    输出N行,其中每一行对应上面的一个数的约数的个数。
    '''
    #下面这一段用一个txt来保存input的信息来模拟input.最后提交代码时候删除这一段即可.
    a9999=open('1.txt','r')
    def input():
        return a9999.readline()
    
    import math
    while 1:
        try:
            a=int(input())
            b=[int(i) for i in input().split()]
            
            def duoshaogeyueshu(a):
                if a==1:
                    return 1
                count=0
    
    
    
    
    
                for ii in range(1,a):
                    if ii*ii==a:
                        count+=1
                        continue
                    if ii*ii>a:
                        break
                    if a%ii==0:
                        count+=2
                return count
            out=[]
            for i in range(len(b)):
                print(duoshaogeyueshu(b[i]))
    
    
    
    
    
    
        except:
            break
    View Code

     拆包打印法:

    #拆包打印法:
    s=['34','324']
    print(*[w for w in s], sep=' ', end='')       #sep是分割,end是结尾
    '''
    [编程题] 光棍指数
    时间限制:1秒
    空间限制:65536K
    对于一个正整数,我们认为它的光棍指数是它二进制表示下1的个数。
    通常认为光棍指数越高,这个数就越孤单。那么问题来了,对于给定的[a,b]区间中。最孤单的数字是谁呢?
    如果光棍指数相同,最孤单的就是最小的那个数。
    
    输入描述:
    第一行一个整数 T (1≤T≤10^4),表示问题数。
    接下来 T 行,每行两个整数 a,b (0≤a≤b≤2^311)。数据之间用一个空格分隔。
    
    
    输出描述:
    对于每个问题,输出一行 Case x: y,其中 x 是问题编号,从 1 开始,y 是答案
    
    输入例子1:
    2
    0 14
    100 1000
    
    输出例子1:
    Case 1: 7
    Case 2: 511
    '''
    
    def main(a,b):#返回a,b之见的最大孤独数
        tmp=bin(a)[2:]
        a=tmp
        c=[]
        while int(a,2)<=b:
    
            if '0' in a:
                index=a[::-1].index('0')
                out=a[::-1]
                chuli=out[:index]+'1'+out[index+1:]
                a=chuli[::-1]
                c.append(a)
                if int(a,2)>b:
                    break
            else:
                a=a+'1'
                c.append(a)
                if int(a,2)>b:
                    break
                
                
        return int(c[-2],2)
    
    
    
    
    
    
    
    
    
    
    a=int(input())
    for i in range(a):
        
        
        
        tmp=[int(i) for i in input().split()]
        out=main(tmp[0],tmp[1])
        print('Case '+str(i+1)+': '+str(out))
       
    View Code

     leecode
    30. 与所有单词相关联的字串:记忆体递归即可

    class Solution:
        def findSubstring(self, s, words):
            """
            :type s: str
            :type words: List[str]
            :rtype: List[int]
            """
            
            if s=='' and words==[]:
                return []
            if s!='' and words==[]:
                return []
            memo={}
            def panding(tmp,words):
                if (tmp,tuple(words)) in memo:
                    return memo[(tmp,tuple(words))]
                if words==[]:
                    return True
                for i in range(len(words)):
                    index=i
                    i=words[i]
                    if tmp[:len(i)]==i:
                        a=words.copy()
                        a.pop(index)
                        memo[(tmp,tuple(words))]=panding(tmp[len(i):],a)
                        return panding(tmp[len(i):],a)
                return False
            
            
            
            
            
            a=''
            for i in range(len(words)):
                a+=words[i]
            num=len(a)
            out=[]
            for i in range(0,len(s)-num+1):
                
                      tmp=s[i:i+num]
                      if panding(tmp,words):
                            out.append(i)
            return out
    View Code

     leecode31. 下一个排列       字典序经典题目

    class Solution:
        #思路是:先从后往前找.比如123,他的后2位可以变大,就让后两位做变换.变换方法是:2找到后面比2大的数,跟2位置交换.之后这个位置后面的数做降序排列即可.
        def nextPermutation(self, nums):
            """
            :type nums: List[int]
            :rtype: void Do not return anything, modify nums in-place instead.
            """
            #先找到可以交换的位置.
            def main(nums):
                
             for i in range(len(nums)-1,-1,-1):
                for j in range(len(nums)-1,i,-1):
                    if nums[j]>nums[i]:
                        nums[i],nums[j]=nums[j],nums[i]
                        out=nums[:i+1]+sorted(nums[i+1:])
                        return out
             return sorted(nums)
            out=main(nums)
            for i in range(len(nums)):
                nums[i]=out[i]
    View Code

     41. 缺失的第一个正数           用set计算

    class Solution:
        def firstMissingPositive(self, nums):
            """
            :type nums: List[int]
            :rtype: int
            """
            if nums==[]:
                return 1
            a=max(nums)
            tmp=range(1,a+2)
            tmp=set(tmp)
            nums=set(nums)
            print(tmp)
            tmp=tmp-nums
            print(tmp)
            tmp=list(tmp)
            return min(tmp)
    View Code
  • 相关阅读:
    sql强化训练(4)
    Python中用PIL/Pillow裁剪图片
    Python中用PIL/Pillow旋转图片
    server项目部署服务器
    ZOJ Monthly, June 2012 [7月9日暑假集训]
    模线性方程(递归版+迭代版)& 扩展欧几里德
    线性筛素数
    First Bangladeshi Contest 20122013 Season[7月12日暑假集训]
    36th ACM/ICPC Asia Regional Daejeon(韩国大田) [7月7日暑假集训]
    MillerRabin 素性测试
  • 原文地址:https://www.cnblogs.com/zhangbo2008/p/9281327.html
Copyright © 2020-2023  润新知