Python实现身份证15位升级至18位

最近有点忙,上次更新还是2019.11.17😭

今天开始好好刷题…每天一道,开始上题。

问题描述
  从1999年10月1日开始,公民身份证号码由15位数字增至18位。(18位身份证号码简介)。升级方法为:
1、把15位身份证号码中的年份由2位(7,8位)改为四位。
2、最后添加一位验证码。验证码的计算方案:
将前 17 位分别乘以对应系数 (7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2) 并相加,然后除以 11 取余数,0-10 分别对应 1 0 x 9 8 7 6 5 4 3 2。
请编写一个程序,用户输入15位身份证号码,程序生成18位身份证号码。假设所有要升级的身份证的四位年份都是19××年
输入格式
  一个15位的数字串,作为身份证号码
输出格式
  一个18位的字符串,作为升级后的身份证号码
样例输入
110105491231002
样例输出
11010519491231002x
数据规模和约定
  不用判断输入的15位字符串是否合理
sfz_num = str(input())
sfz_sj = sfz_num[0:6]+"19"+sfz_num[6:15]
xs = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
c = 0;
dy = "1 0 x 9 8 7 6 5 4 3 2".split(' ')
for i in range(17):
    c = c+xs[i]*int(sfz_sj[i])
print(sfz_sj+dy[int(c%11)])

 

给phpstudy安装Memcached

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 显示帮助

Python 实现矩形切割

样题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
        

 

Python 实现2^k进制数

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

Python实现回文数字列出

def isHuiwen(n):
    reversed_str= str(n)
    return reversed_str == reversed_str[-1::-1]
n = eval(input())
i = 10000
count = 0

if 10<n<100:
    while(i<=999999):
        rs = 0
        ii = str(i)
        if isHuiwen(i) == True:
            for j in range(len(ii)):
                rs+=int(ii[j])
            if(rs == n):
                count += 1
                print(i)

        i+=1

    if count == 0 :
        print(-1)
else:
    print(-1)
观察数字:12321,123321  都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。

本题要求你找到一些5位或6位的十进制数字。满足如下要求:
该数字的各个数位之和等于输入的整数。

输入
一个正整数  n  (10< n< 100),  表示要求满足的数位和。
输出
若干行,每行包含一个满足要求的5位或6位整数。
数字按从小到大的顺序排列。
如果没有满足条件的,输出:-1

懒散了好久….

🤐 话说好久没码程序了…大多都忘得差不多了,明天还得练车调整好心态。

不过没事!我想任何学问都是一样的,就像武学的极境便是大道至简,返璞归真。

跳出条条框框也会是一种新的境界。


废话不多说,继续立下学期的flag!

  1. 围棋
  2. 吉他
  3. 至少去1个没到过的城市
  4. SSM框架
  5. Android
  6. STM32
  7. Linux
  8. C语言
  9. 看完名侦探柯南
  10. 证券从业资格证
  11. 至少看1本哲学相关书籍、1本金融相关书

…….

楼层日后更进

自动刷学识

😂 本来学识都看完了的!还是熬夜刷完,结果因为之前从C2转C1,准备预约科目一才知道都白看了,好吧!再看一遍是不可能的,那就写一个脚本自动看吧~

改进代码

setInterval(function(){
 chapterWareId = nxtNode;
        chapterId = nxtChapterId;
        firstWareMark = 1;
        curCourseId = getCurCourseId(chapterId);
        selectingNode = zTreeObj.getNodeByParam("id",chapterId, null);
        player_mp4(chapterId,curCourseId);
 setTimeout(function(){
  $("button").click();
  console.log(true);
 },1000);
},9000);