在ccfcsp官网(登机牌条码)的样例都能通过,但找半天没找到只有50分的原因。
主要的思路就是:
一、计算g(x)为了方便用的就是模拟人工计算。
二、计算长除法。

注释也很详细,希望有xd找到问题了能够不吝赐教!


w, s = [int(x) for x in input().split()]
string = list(input())curmode = 0
# res 保存结果
res = list()
def cv(value):global curmode,resasc = ord(value)# 大写模式if asc>=65 and asc<=90:if curmode == 0:res.append(asc-65)elif curmode == 1:res.append(28)res.append(28)curmode = 0res.append(asc-65)elif curmode == 2:res.append(28)curmode = 0res.append(asc-65)# 小写模式elif asc>=97 and asc<=122:if curmode == 0:res.append(27)curmode = 1res.append(asc-97)elif curmode == 1:res.append(asc-97)elif curmode == 2:res.append(27)curmode = 1res.append(asc-97)# 数字模式elif asc>=48 and asc<=57:if curmode == 0:res.append(28)curmode = 2res.append(asc-48)elif curmode == 1:res.append(28)curmode = 2res.append(asc-48)elif curmode == 2:res.append(asc-48)else:return# 计算数据码字
for i in string:cv(i)if len(res)%2 != 0:res.append(29)res = [res[i]*30+res[i+1] for i in range(0, len(res), 2)]# 校验码字数目k
if s == -1:k = 0
else:k = pow(2,s+1)# 填充码字数目t,长度码字,填充码字if (len(res)+1+k)%w != 0:t = w - (len(res)+1+k)%w
else:t = 0res.insert(0, len(res)+1+t)
for i in range(t):res.append(900)# 计算gx
if s != -1:# x的k次方乘dx,下标代表阶xkdx = [0 for i in range(k)]+res[-1::-1]# gxgx = [0 for i in range(k+1)]gx[0]=1for i in range(1, k+1):# 乘3的i次方得到temp1temp1 = [0 for i in range(k+1)]for j in range(k+1):temp1[j] = -1*gx[j]*((3)**i)# 乘x得到temp2temp2 = [0] + gx[:]# 更新gxfor i in range(k+1):gx[i] = temp2[i]+temp1[i]# 长除法,dx/gx,返回k-1阶余数
def divider(dx, gx, k):# 若需要执行则先执行一次除法,余数为rx, res为两个最大系数相除的结果if len(dx) > k:dorder = len(dx)-1gorder = len(gx)-1res = dx[-1]/gx[-1]# temp = res*gx,再与dx对齐temp = [res*x for x in gx]temp = [0 for i in range(dorder-gorder)]+temprx = [dx[i]-temp[i] for i in range(dorder+1)]while rx[-1]==0:rx.pop()while len(rx)>k:dx = rxdorder = len(dx)-1res = dx[-1]/gx[-1]temp = [res*x for x in gx]temp = [0 for i in range(dorder-gorder)]+temprx = [dx[i]-temp[i] for i in range(dorder+1)]while rx[-1]==0:rx.pop()else:rx = dx# 保证余数为k-1阶,共k项if len(rx) != k:rx = rx + [0 for i in range(k-len(rx))]return [-1*int(x) for x in rx]# 测试长除法
#print(divider([5, 5, 15], [1, 3], 3))if s != -1:res = res + [x%929 for x in divider(xkdx[:], gx[:], k)[-1::-1]]for x in res:print(x)

登机牌条码(python)相关推荐

  1. CCF-CSP 202112-3登机牌条码 解题思路+满分题解+详细注释

    CCF-CSP 202112-3登机牌条码 解题思路+满分题解+详细注释 题目链接:202112-3登机牌条码 思路: 第一步:按照题目顺序进行处理,即首先处理字符串,将对应的字符串转换成相应的数字编 ...

  2. CSP CCF: 202112-3 登机牌条码 (C++)

    题目来源: 计算机软件能力认证考试系统 问题描述 试题编号: 202112-3 试题名称: 登机牌条码 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 题目背景 西西艾弗岛景色优美,游人 ...

  3. 【CCF-CSP】202112-3 登机牌条码

    题目 202112-3 登机牌条码 代码 #include<bits/stdc++.h> using namespace std; const int N = 100010;int mai ...

  4. CSP202112-3登机牌条码

    目录 思路 模拟 输入模式处理 求长度码字,有效数据码字,填充码字 校验码字的求取 求gx(多项式乘法) 求x^n*dx 求校验码字 总结 原题太长就挂个链接CSP202112-3登机牌条码 思路 其 ...

  5. CCF-CSP-202112-3:登机牌条码(C++11题解)

    文章目录 问题描述 解题思路 数学基础 模拟思路 得分技巧 AC代码 问题描述 题目来源:CCF-CSP-202112-3:登机牌条码 解题思路 数学基础 需要一些很简单的数论基础知识(主要是同余的知 ...

  6. CCF-CSP 202112-3 登机牌条码 100分

    原题链接:CCF-CSP 202112-3 登机牌条码 参考博客: CSP 202112-3 登机牌条码 CSP 202112-3 登机牌条码 (详细图解) #include <bits/std ...

  7. CSP 202112-3 登机牌条码 40分

    2022.3.4 练习 CSP 202112-3 登机牌条码 之前在考场上只拿了20分,就是因为没仔细看题:在编码开始时,编码器处于大写字母模式,没有考虑这个情况...血泪啊 #include < ...

  8. CSP202112——T3登机牌条码

    其实题目已经给了模拟思路了: 计算数据码字.填充码字和长度码字(注意特判s==-1的时候) 计算校验码字,主要是一个多项式求余 数据码字 按题意模拟,解析字符串,得到编码值,如果长度是奇数就在加个29 ...

  9. 多项式计算大模拟:csp202112-3登机牌条码

    题目描述 csp202112-3 题目分析 本题有两部分模拟,一部分是计算数据码字,一部分是计算校验码字. 数据码字的计算比较简单,写个简单的状态机生成一系列数字之后两两组合即可获得数据区.测试样例也 ...

最新文章

  1. mysql 查看最近的语句_查看MySQL最近执行的语句
  2. HD 1003 Max Sum(贪心)
  3. sql连接远程服务器索引超出了_手机怎么连接服务器远程桌面?RD client远程桌面使用教程...
  4. Acwing 1081. 度的数量(以及本人对数位dp的浅薄理解)
  5. JavaScript——Object类型
  6. 分布式系统研发初体验
  7. jquery按键事件_jQuery按键事件
  8. 黑马程序员-JavaAPI-17天-4(Arrays)
  9. CF AIM Tech Round 4 (Div. 1) A. Sorting by Subsequences
  10. html的table的子节点,HTMLTableElement子节点并不如预期
  11. WPE 过滤器 滤镜 用法
  12. 用户收货地址管理后端实现
  13. Xmind8 Pro 最新版 破解教程(序列号|破解文件)
  14. android高效ORM数据库框架greenDao使用
  15. html img 拉伸,图片因img标签拉伸的处理办法
  16. 宝莱坞机器人 西瓜_《宝莱坞机器人之恋》电影完整版免费在线观看_2010西瓜影音 - 辛集电影院...
  17. 【Python--torch(激活函数说明+代码讲解)】激活函数(sigmoid/softmax/ELU/ReLU/LeakyReLU/Tanh)
  18. 浅谈golang中的代理模式
  19. 联机版的连连看源代码
  20. 2022中国中医药产业展,山东医药保健展,济南药交会9月举办

热门文章

  1. 你所说的到底是哪一种
  2. 如何在三维模型中按一定密度提取点云数据(详细说明)
  3. H3C 交换机恢复出厂设置以及知识积累
  4. JAVA微信登陆详解
  5. Windows to go(WGT)的制作--有图文
  6. abbplc型号_ABB AC500系列PLC
  7. 拼多多API接口,item_get - 根据ID取商品详情调用展示
  8. 深度学习:算法到实战
  9. src下创建java文件_Eclipse下maven项目创建src/main/java 源文件夹报错文件文件已存在问题...
  10. 手机re怎么刷linux,手机刷机刷入recovery的方法小米刷recovery固件方法