每日一练——第12天

import os
import sys

# 请在此输入您的代码
n=int(input())
st=input()
for i in range(100000):
  if bin(i)[2:] not in st:
    print(i)
    break

import os
import sys

# 初始化变量,读取输入
n, k = map(int, input().split())
lis = []
for i in range(n):
  lis.append(list(map(int, input().split())))

# 定义一个函数,用于判断在给定的n下是否能满足特定条件
def find(n):
  """
  计算每个矩形中可以切割出的边长为n的正方形的数量之和,并判断是否至少达到k个。
  
  参数:
  n (int): 正方形的边长
  
  返回:
  bool: 如果切割出的正方形数量之和达到或超过k,则返回True,否则返回False。
  """
  ans = 0
  for i, j in lis:
    ans += (i // n) * (j // n)
  if ans >= k:
    return True
  return False

# 使用二分查找法寻找最大边长
a = 1
b = 10000
while a <= b:
  mid = (a + b) // 2
  if not find(mid):
    b = mid - 1
  else:
    a = mid + 1

# 输出最大边长减一,因为最后一次使find函数返回True的边长是a-1
print(a-1)

 

冒泡排序 

import os
import sys

# 请在此输入您的代码
n=int(input())
lis=list(map(int,input().split()))
m=0
for i in range(n-1):
  for j in range(i+1,n):
    m=max(m,(abs(i-j)+abs(lis[i]-lis[j])))
print(m)

 

n,m=map(int,input().split())
r,c=map(int,input().split())
ans=[[0]*m for i in range(n)]
x,y=0,0
value=1
ans[x][y]=value

while value < n*m: #输出完最后一个数循环才结束
  while y+1<m and ans[x][y+1]==0: #不越右界m-1、下一个数是0
    value+=1
    y+=1
    ans[x][y]=value
  while x+1<n and ans[x+1][y]==0: #不越下界、下一个数是0
    value+=1
    x+=1
    ans[x][y]=value
  while y-1>=0 and ans[x][y-1]==0: #不越左界0、下一个数是0
    value+=1
    y-=1
    ans[x][y]=value
  while x-1>=0 and ans[x-1][y]==0: #不越上界、下一个数是0
    value+=1
    x-=1
    ans[x][y]=value
print(ans[r-1][c-1])

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值