Цикл в Java и получение суммы без использования функции buitin - PullRequest
0 голосов
/ 21 сентября 2019

У меня есть проблема, которую я пытаюсь решить.Работа выглядит так:

Пользователь введет число, скажем, 5, и на выходе будет

Output:
5 55 555 5555 55555
sum: 61725

Другой пример:

Input: 4
Output: 
4 44 444 4444
sum: 4936

Я отобразил сериюно не могу сделать сумму.

Scanner input = new Scanner(System.in);

    System.out.print("Input: ");
    int in = input.nextInt();
    int sum = 0;

    System.out.println("Output: ");

    for(int i=1;i<=in;i++){
        for(int j=0;j<i;j++){
            System.out.print(in);
        }
        System.out.print(" ");  
    }

это напечатает серию.Вы можете изменить весь код, без проблем.Просто не могу использовать любую встроенную функцию, такую ​​как Math.pow() и т. Д.

Я думал об использовании:

for(int a=1;a<=in;a++){ 
    f=f*10+in; sum+=f; 
}

Ответы [ 4 ]

2 голосов
/ 21 сентября 2019
int in = ...

int sum = 0;
int term = in;
for (int i = 0; i < in; i++) {
    sum += term;
    term = 10 * term + in;
}  

Дело в том, что вы можете вычислить ряды 4, 44, 444, ... с помощью простой арифметики и цикла.

Но учтите, что при больших значениях * 1004 это будет прерыватьсяпо двум причинам.

Задача: посмотрите, сможете ли вы выяснить, кто они!

1 голос
/ 21 сентября 2019

не так ли просто?

Scanner input = new Scanner(System.in);

    System.out.print("Input: ");
    int in = input.nextInt();
    int sum = 0;
    int product=1;

    System.out.println("Output: ");

    for(int i=1;i<=in;i++){
        for(int j=0,prod=in;j<i;j++){
            System.out.print(in);
            prod=(j>0)?(prod*10)+in:prod;
        }
        sum+=prod;
        System.out.print(" ");  
    }
    System.out.println("sum: "+sum);
1 голос
/ 21 сентября 2019

Вы можете использовать функцию String#repeat и разобрать ее в целое число.В каждом цикле вы должны добавить его к сумме:

sum = sum + Integer.valueOf(("" + in).repeat(in));

Без использования ЛЮБЫХ встроенных функций, мы должны заметить, что в сумме in появляется in раз, 10 * in- (in - 1) раз и т. Д. (sum = in * in + 10 * in * (in - 1) + ...), поэтому вы можете использовать следующий цикл:

int sum = 0;
int currentIn = in;
for(int i = 0; i < in; i++) {
    sum = sum + (in - i) * currentIn;
    currentIn = currentIn * 10;
}
System.out.println(sum);

Обратите внимание, что это делается с помощью одного цикла.

0 голосов
/ 21 сентября 2019

Попробуйте следующую реализацию:

long sum = 0;
String num;
 for(int i=1;i<=in;i++){
    num = ""; //re-initialize number
    for(int j=0;j<i;j++){
     num += in; //keep track of every individual number
        System.out.print(in);
    }
    System.out.print(" ");  
   //sum up each number after space
   sum += Integer.parseInt(num);
  }
  System.out.print("sum: " + sum);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...