-3

如何打印以下图案?如果给出了行和列。例如

x=5
y=6

从 x 开始,下一行是上一行的总和值。

55555
5+5+5+5+5=25

那么下一行必须是

25252

output:
55555
25252
16161
15151
13131
99999

谁能帮我写一个程序来解决这个问题?

4

3 回答 3

0

你可以使用这样的东西。

def f(x, y):
    orig_x = x
    for _ in range(y):
        tmp = (str(x)*orig_x)[:orig_x]
        x = sum([int(i) for i in tmp])
        print(tmp)

f(5,6)

55555
25252
16161
15151
13131
99999
于 2020-05-08T06:58:31.813 回答
0

不是最有效的代码,但是..

#get the total given the initial number/row
def getSum(number):
    total = 0
    for num in number:
        total += int(num)
    return total

#print the row given the number and the number of columns
def printRow(number, columns):
    counter = 0
    row = ""
    while (counter < columns):
        for num in number:
            row += num
            counter += 1
            if (counter >= columns):
                break
    print(row)
    return row

x = 5 #initial number
y = 6 #number of rows

m = x

for z in range(y):
    n = getSum(str(x))
    x = printRow(str(n), m)
于 2020-05-08T07:33:33.103 回答
0

使用 Java 的相同模式问题

添加您自己的 addDigits() 方法

public static void pattern(int N, int K) {
    var originalN = N;
    for (int i = 0; i < K; i++) {
        String temp = new String(new char[originalN]).replace("\0", Integer.toString(N));
        String newTemp = temp.substring(0, originalN);
        System.out.println(newTemp);
        N = addDigits(newTemp);
    }
}

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int N = sc.nextInt();
    int K = sc.nextInt();
    pattern(N, K);
}
于 2020-05-08T12:15:58.723 回答