之前立的flag,到现在一个都没开始进行😶😐
话说python还没学几章呢… “被迫”参加蓝桥杯,emm好吧不指望拿个奖,权当没白学这门课吧。
再立个flag每天做一道python题,代码质量可能不高大佬别喷🙄
之前立的flag,到现在一个都没开始进行😶😐
话说python还没学几章呢… “被迫”参加蓝桥杯,emm好吧不指望拿个奖,权当没白学这门课吧。
再立个flag每天做一道python题,代码质量可能不高大佬别喷🙄
有时候我们需要绑定用户id,让他们可以通过id与对方进行通信
通过Map实现一个简单的连接池
import io.netty.channel.socket.SocketChannel; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class GatewayService{ private static Map map = new ConcurrentHashMap(); public static void addGatewayChannel(String id, SocketChannel gateway_channel){ map.put(id,gateway_channel); } public static Map getChannels(){ return map; } public static SocketChannel getGatewayChannel(String id){ return (SocketChannel)map.get(id); } public static void removeGatewayChannel(String id){ map.remove(id); } }
Memcached是一款开源式的分布式缓存系统,Memcached 1.4.20为最新版本,适用于windows 64位和32位操作系统。Memcached 是性能的数据存储缓存工具,对于数据库庞大的服务器来说,使用Memcached 有效地减轻服务器的负担,提高服务的运行性能。
1.解压Memcached压缩包至拓展目录
2.安装/启动驱动即可
安装:
memcached -d install
memcached -d start
net start “Memcached Server”
卸载:
memcached -d stop
memcached -d remove
sc delete “Memcached Server”
memcached的基本设置:
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助
【问题描述】
给定数列 1, 1, 1, 3, 5, 9, 17, …,从第 4 项开始,每项都是前 3 项的和。求
第 20190324 项的最后 4 位数字。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个 4 位整数(提示:答案的千位不为 0),在提交答案时只填写这个整数,填写多余的内容将无法得分。
def slqz(n): if n in [1,2,3]: return 1 f1,f2,f3,fn=1,1,1,0 for i in range(4,n+1): fn=(f1+f2+f3)%10000 f1=f2 f2=f3 f3=fn return fn print(slqz(20190324))
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
n,m = map(int,input().split(' ')) for i in range(n): for k in range(i): if k < m: print(chr(65-k+i),end="") for j in range(m-i): print(chr(j+65),end="") print("")
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。
问题描述Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
输入格式输入包含一个整数n。输出格式输出一行,包含一个整数,表示Fn除以10007的余数。说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。
样例输入10样例输出55样例输入22样例输出7704数据规模与约定1 <= n <= 1,000,000。
def f(n): if n in [1,2]: return 1 f1,f2,fn=1,1,0 for i in range(3,n+1): fn = (f1+f2)%10007 f1 = f2 f2 = fn return fn n = int(input()) print(f(n))
巴斯维克命案抓住了六个嫌疑犯,他们的口供如下:
A:我不是罪犯
B:A、C中有一个是罪犯
C:A和B说了假话
D:C和F说了假话
E:其他五个人中,只有A和D说了真话
F:我是罪犯
他们中只有一半说了真话,凶手只有一个。
本题可能有多种可能性,即正确答案(找到唯一的凶手)可能有多个,但每一个可能的答案(某一个是凶手)都满足上述口供。
请编程找出可能的凶手输出。
(假设唯一的凶手是A或者D或者E,则输出结果为三行,按字母顺序依次输出)
def a(): #我不是罪犯 return people[0]!=1 def b(): #A,C中有一个是罪犯 return (people[0]==1 and people[2]==0) or (people[0]==0 and people[2]==1) def c(): #A和B说了假话 return bool(1-a()) and bool(1-b()) def f(): #我是罪犯 return people[5]==1 def d(): #C和F说了假话 return bool(1-c()) and bool(1-f()) def e(): #其他五个人中,只有A和D说了真话 return a() and d() and bool(1-b()) and bool(1-c()) and bool(1-f()) people=[] for i in range(6): count=0 pc="" people.clear() for j in range(6): people.append(0) people[i] = 1 if a()==True: count+=1 pc+='a,' if b()==True: count+=1 pc+='b,' if c()==True: count+=1 pc+='c,' if d()==True: count+=1 pc+='d,' if e()==True: count+=1 pc+='e,' if f()==True: count+=1 pc+='f,' if count==3: print(chr(65+i)) #print(people) #print("排查%s,结果%s,排查项%s"%(str(i),str(count),str(pc)))
样题2:特别数的和(编程大题)
【问题描述】
小明对数位中含有2、0、1、9的数字很感兴趣(不包括前导0),在1到40中这样的数包括1、2、9、10至32、39和40,共28个,他们的和是574。
请问,在 1 到 n 中,所有这样的数的和是多少?
【输入格式】
输入一行包含一个整数 n。
【输出格式】
输出一行,包含一个整数,表示满足条件的数的和。
【样例输入】
40
【样例输出】
574
while True: n=eval(input()) count=0 for i in range(1,n+1): for j in str(i): if j in ['2','0','1','9']: count+=i break print(count)
样题1:矩形切割(结果填空题)
【问题描述】
小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形。
当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方形,剩下一块矩形,然后再切割剩下的矩形材料,直到全部切为正方形为止。
例如,对于一块两边分别为5和3的材料(记为5×3),小明会依次切出3×3、2×2、1×1、1×1共4个正方形。
现在小明有一块矩形的材料,两边长分别是2019和324。请问小明最终会切出多少个正方形?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
说明:以上是问题描述的部分,选手做题时可以直接手算答案,即按照题目意思一步一步切割,最后得到切出的矩形个数,手算可能花费一些时间。如果选手在手算时使用除法等方式加快速度,时间可能少一些。如果选手编写程序来计算,可以减少手算中出现的失误。
本题答案为:21
while True: w,h=map(int,input().split(' ')) count=0 while True: if w>h: w-=h count+=1 if w<h: h-=w count+=1 elif w==h: count+=1 w=h=0 if w<=0 or h<=0: print(count) break
def findMax(a,b,c): maxNum = 0 if(a>b): maxNum = a else: maxNum = b if(c>maxNum): maxNum = c return maxNum while True: a,b,c = map(int,input().split()) d = findMax(a,b,c) e=t=1 while True: t = e*d if(t%a==t%b==t%c): print(t) break e+=1
k,w=map(int,input().split()) wd,wm=divmod(w,k) def c(m,n): if n>m: return 0 if n<0: return 0 s=1 for i in range(n): s=s*(m-i)/(i+1) return round(s) s0=sum([c(2**k-1,i) for i in range(2,wd+1)]) s1=sum([c(2**k-1-x0,wd) for x0 in range(1,2**wm)]) print(s0+s1)
这次代码不是我写的…不过从大佬的代码中提前接触了map、divmod、[xxxx for i in range()] 的使用,也算有收益了
设r是个2^k 进制数,并满足以下条件:
(1)r至少是个2位的2^k 进制数。
(2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位。
(3)将r转换为2进制数q后,则q的总位数不超过w。
在这里,正整数k(1≤k≤9)和w(k〈w≤30000)是事先给定的。
问:满足上述条件的不同的r共有多少个?
我们再从另一角度作些解释:设S是长度为w 的01字符串(即字符串S由w个“0”或“1”组成),S对应于上述条件(3)中的q。将S从右起划分为若干个长度为k 的段,每段对应一位2^k进制的数,如果S至少可分成2段,则S所对应的二进制数又可以转换为上述的2^k 进制数r。
例:设k=3,w=7。则r是个八进制数(2^3=8)。由于w=7,长度为7的01字符串按3位一段分,可分为3段(即1,3,3,左边第一段只有一个二进制位),则满足条件的八进制数有:
2位数:高位为1:6个(即12,13,14,15,16,17),高位为2:5个,…,高位为6:1个(即67)。共6+5+…+1=21个。
3位数:高位只能是1,第2位为2:5个(即123,124,125,126,127),第2位为3:4个,…,第2位为6:1个(即167)。共5+4+…+1=15个。
所以,满足要求的r共有36个。
只有1行,为两个正整数,用一个空格隔开:
k w
1行,是一个正整数,为所求的计算结果,即满足条件的不同的r的个数(用十进制数表示),要求最高位不得为0,各数字之间不得插入数字以外的其他字符(例如空格、换行符、逗号等)。
(提示:作为结果的正整数可能很大,但不会超过200位)
3 7
36