Образец строки Сумма цифр - PullRequest
0 голосов
/ 08 мая 2020

Как напечатать следующий узор? Если даны строка и столбец. Например,

x=5
y=6

, начиная с x, а следующая строка является суммой значения предыдущей строки.

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

, тогда следующая строка должна быть

25252

output:
55555
25252
16161
15151
13131
99999

Может ли кто-нибудь помочь мне написать программу для решения этого вопроса?

Ответы [ 3 ]

0 голосов
/ 08 мая 2020

Не самый эффективный код, но ..

#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)
0 голосов
/ 08 мая 2020

Тот же образец шаблона с использованием 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);
}
0 голосов
/ 08 мая 2020

Вы можете использовать что-то вроде этого.

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
...