ndtt315237 2022-01-07 23:54 采纳率: 100%
浏览 36
已结题

蓝桥杯基础练习。为什么这样写不对?只对了百分之八十.

资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
  123321是一个非常特殊的数,它从左边读和从右边读是一样的。
  输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
  输入一行,包含一个正整数n。
输出格式
  按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899
数据规模和约定
  1<=n<=54。

n=int(input())
l=[]
for x1 in range(1,10):
    for x2 in range(10):
        if 0<n-2*(x1+x2)<10:
            x3=n-2*(x1+x2)
            l.append(int(str(x1*10001+x2*1010+x3*100)))
        if (n-2*(x1+x2))%2==0 and 0<(n-2*(x1+x2))/2<10:
            x3=(n-2*(x1+x2))/2
            l.append(int(str(x1*100001+x2*10010+x3*1100)[:6]))
l=sorted(l)
for x in l:
    print(x)

  • 写回答

1条回答 默认 最新

  • Code_流苏 C/C++领域优质创作者 2022-01-08 00:12
    关注

    八十分的话,题主可能思路上没啥问题,就是一些细节和实现方法上的错误。可以检查检查实现逻辑,也可以看看下面的方法。
    可以尝试下述方法:

    n = int(input())
    m = 100
    while m < 1000:
        a = m // 100
        b = (m - a * 100) // 10
        c = m - a*100 - b*10
        if n == 2*(a+b)+c:
            print(a, b, c, b, a, sep='', end='\n')
        m += 1
    m = 100
    while m < 1000:
        a = m // 100
        b = (m - a * 100) // 10
        c = m - a*100 - b*10
        if n/2 == a+b+c:
            print(a, b, c, c, b, a, sep='', end='\n')
        m += 1
    
    

    测试:52 输出结果如图:

    img

    希望对题主有所帮助,望采纳!!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月16日
  • 已采纳回答 1月8日
  • 修改了问题 1月7日
  • 创建了问题 1月7日

悬赏问题

  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数