请大lao们帮帮我,刚学不懂

img


这个该怎么下手,刚学不懂,大lao们能用简单的循环解决吗,最好是newhand能看懂的那种,谢谢๑•́₃•̀๑

首先依据题目要求确定大体解法。题目要求在10~10000间确定满足一定要求的数,那么设这个数字为num,则有范围10 ≤ num ≤ 10000,用区间表示就是[10,10000],那么循环变量范围就确定了。又因为要num满足一定数量关系,所以循环节也确定了,是“计算+判断”型。
具体写起来是这样的:

results = []
for num in range(10,10001):#range()函数提供一个左闭右开的区间,所以将[10,10000]写为[10,10001)。
    num_lst = list(str(num))
    sum_ = sum([int(i) ** len(num_lst) for i in num_lst])
    if num == sum_:
        results.append(num)
print(f'要求的数有:\n{results}')

如果要实现图片输出示例的样式,可以对上述代码稍加改动:

results = []
for num in range(10,10001):
    num_lst = list(str(num))
    sum_ = sum([int(i) ** len(num_lst) for i in num_lst])
    if num == sum_:
        expand = ''
        for i in num_lst:
            expand += f'+{i}**{len(num_lst)}'
        expand = expand.replace('+','',1)
        results.append(f'{num}={expand}')
print('要求的数有:\n')
for result in results:
    print(result)

原理是文字的删改与添加,方向是文字信息处理。
输出示例:

img

不用次方函数,纯用for,要三个for循环嵌套,外层循环为数的大小,内层两个循环计算和
伪代码如下:

//1个循环:数字范围
for  10-10000
  int z=当前数
  int n = 长度
  Strin[] s = 每一位数   // 数字转化成一个字符数组
  int count=0;  // 求和
 //2个循环,循环每一位数 
 for n  
    int c=1;    // 每一次循环的和
    int s  //  第n为数字
    //3个循环,循环几次(次方)
    for 长度
      c*=s;   // 每一位数的n次方
     
    count+=c;   // 每一位数的次方和
 if  该数字 = count  // 两数相等
   满足条件,输出该数