鱼C论坛

 找回密码
 立即注册
查看: 5506|回复: 28

[已解决]数列问题求解

[复制链接]
发表于 2022-10-31 23:01:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
数列问题,请看图片!
最佳答案
2022-11-1 05:51:17
本帖最后由 jackz007 于 2022-11-1 05:54 编辑
a , p , d = map(int , input() . split())
e = list(map(int , list(str(a))))
e[- p] = (e[- p] + d) % 10 if e[- p] < 5 else abs(e[- p] - d) % 10
for k in range(-1 , - p , -1) : e[k] = 0
print(*e , sep = '')
        运行实况:
D:\[00.Exerciese.2022]\Python>python x.py
124987 2 3
124950

D:\[00.Exerciese.2022]\Python>python x.py
540670 3 9
540300

D:\[00.Exerciese.2022]\Python>python x.py
7145042 2 8
7145020

D:\[00.Exerciese.2022]\Python>python x.py
124987 2 523
124950

D:\[00.Exerciese.2022]\Python>python x.py
4386709 1 2
4386707

D:\[00.Exerciese.2022]\Python>

输入输出结果

输入输出结果

数列问题

数列问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-31 23:32:51 | 显示全部楼层

回帖奖励 +1 鱼币

def foo(n, p, d):
    n = str(n)
    np = int(n[-p])
    if 0 <= np <= 4:
        r = str((np + d) % 10)
    else:
        r = str(abs(np - d))[0]
    return n[:-p] + r + '0' * (len(n[-p:]) - 1)

if __name__ == '__main__':
    N, P, D = map(int, input().split())
    print(foo(N, P, D))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-11-1 05:51:17 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-11-1 05:54 编辑
a , p , d = map(int , input() . split())
e = list(map(int , list(str(a))))
e[- p] = (e[- p] + d) % 10 if e[- p] < 5 else abs(e[- p] - d) % 10
for k in range(-1 , - p , -1) : e[k] = 0
print(*e , sep = '')
        运行实况:
D:\[00.Exerciese.2022]\Python>python x.py
124987 2 3
124950

D:\[00.Exerciese.2022]\Python>python x.py
540670 3 9
540300

D:\[00.Exerciese.2022]\Python>python x.py
7145042 2 8
7145020

D:\[00.Exerciese.2022]\Python>python x.py
124987 2 523
124950

D:\[00.Exerciese.2022]\Python>python x.py
4386709 1 2
4386707

D:\[00.Exerciese.2022]\Python>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-1 07:11:01 | 显示全部楼层
楼上正解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-1 07:11:48 | 显示全部楼层
嗯?这题用Python做
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-1 08:39:32 | 显示全部楼层

谢谢,麻烦解释下代码!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-1 08:40:24 | 显示全部楼层

谢谢,麻烦解释下代码含义!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-1 09:29:31 | 显示全部楼层

回帖奖励 +1 鱼币

本帖最后由 jackz007 于 2022-11-1 09:35 编辑
nbwubo 发表于 2022-11-1 08:40
谢谢,麻烦解释下代码含义!

a , p , d = map(int , input() . split())     # 从键盘获取三个整数 :a , p , d 
e = list(map(int , list(str(a))))            # 把整数 a 变成列表,如果 a = 12345,那么,e = [1 , 2 , 3 , 4 , 5]
e[- p] = (e[- p] + d) % 10 if e[- p] < 5 else abs(e[- p] - d) % 10   # e[- p] 就是整数 a 从右边数的第 p 位,根据 e[- p] 的值,按规则计算其新值  
for k in range(-1 , - p , -1) : e[k] = 0     # 把 e[- p] 右面的数都变成 0 值
print(*e , sep = '')                         # 解包打印列表 e,让每个元素之间无间隔
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-1 09:55:09 | 显示全部楼层

第三行的语句有点看不懂,这个是什么语法,没有if 可以有else吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-1 10:03:27 | 显示全部楼层
本帖最后由 jackz007 于 2022-11-1 10:04 编辑
nbwubo 发表于 2022-11-1 09:55
第三行的语句有点看不懂,这个是什么语法,没有if 可以有else吗?


e[- p] = (e[- p] + d) % 10 if e[- p] < 5 else abs(e[- p] - d) % 10

       这样呢,还看不懂?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-1 12:58:32 | 显示全部楼层
jackz007 发表于 2022-11-1 10:03
e[- p] = (e[- p] + d) % 10 if e[- p] < 5 else abs(e[- p] - d) % 10

       这样呢,还看不懂?


哦,分支条件语句也可以这样写?写到一行上?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-1 13:06:20 | 显示全部楼层
nbwubo 发表于 2022-11-1 12:58
哦,分支条件语句也可以这样写?写到一行上?

           是的,e[- p] 的值取决于 if 条件,如果是 True ,就是 if 前面的值,否则,就是 else 后面的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-16 20:12:29 | 显示全部楼层
a , p , d = map(int , input("请输入三个正整数,数字之间用空格隔开:") . split())    # 从键盘获取三个整数 :a , p , d
e = list(map(int , list(str(a))))           # 把整数 a 变成列表,如果 a = 12345,那么,e = [1 , 2 , 3 , 4 , 5]

if e[- p] < 5:
    e[- p] = (e[- p] + d) % 10              # e[- p] 就是整数 a 从右边数的第 p 位,根据 e[- p] 的值,按规则计算其新值
else:
    abs(e[- p] - d) % 10                    # p减去d数值的绝对值,并获取该数值的个位数
for k in range(-1 , - p , -1):
    e[k] = 0                                # 把 e[- p] 右面的数都变成 0 值
print(*e , sep = '')                        # 解包打印列表 e,让每个元素之间无间隔
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-16 20:15:23 | 显示全部楼层

改写成这样容易理解点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-16 20:16:09 | 显示全部楼层

list(str(a) 这个函数是什么意思?为什么a的数值型的值要转换成字符型?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-16 20:17:56 | 显示全部楼层

e[- p] , e[k] 语法是什么意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-16 20:43:03 | 显示全部楼层
nbwubo 发表于 2022-11-16 20:17
e[- p] , e[k] 语法是什么意思?

   序列型对象的切片操作啊,你不会连这个都不懂吧?e[- p] 是负索引,以最后一个元素索引 -1 为参照的,倒数第 2 个元素索引为 -2,余此类推;而 e[k] 则是正向索引,以第一个元素索引 0 为参照,第 2 个元素索引为 1,余此类推。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-17 07:59:32 | 显示全部楼层

回帖奖励 +1 鱼币

对啊,这很基础啊就是切片操作啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-17 11:05:28 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-17 11:19:40 | 显示全部楼层
学习~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 21:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表