Как убрать нули перед числом? - PullRequest
0 голосов
/ 23 мая 2019

Я работаю над этим кодом уже 3 дня и не могу понять, как удалить нули перед выводом.

Это программа, которая вычисляет факториал числа.Даже если я использую оператор if, как вы можете видеть, который закомментирован, он удаляет нули после и между числами.Я даже пытался принять size в качестве начального значения для a, но оно просто принимает глобальное значение, но не из цикла while, я даже пытался сохранить его значение в другой переменной, тогда оно также не работает.

#include <bits/stdc++.h>
#include <iostream>

using namespace std;

// Complete the extraLongFactorials function below.
void extraLongFactorials(int n) {
  int arr[500] = {0};
  int size = 1, i = 0, carry = 0, temp = 0;
  arr[0] = 1;
  for (int j = 1; j <= n; j++) {
    for (int k = 0; k < 500; k++) {
      temp = arr[k] * j + carry;
      arr[k] = temp % 10;
      carry = temp / 10;
    }
    while (carry) {
      size++;
      arr[size] = carry % 10;
      carry %= 10;
    }
  }

  for (int a = 499; a >= 0; a--) { // if(arr[a]!=0)
    cout << arr[a];
  }
}

int main() {
  int n;
  cin >> n;
  cin.ignore(numeric_limits<streamsize>::max(), '\n');

  extraLongFactorials(n);

  return 0;
}

1 Ответ

1 голос
/ 24 мая 2019

Просто пропустите ведущие нули, найдя индекс первого ненулевого значения:

i = 499;

// Skip leading zeros.
while (i > 0 && arr[i] == 0) {
    --i;
}

while (i >= 0) {
    cout << arr[i--];
}

Также, пожалуйста, не #include <bits/stdc++.h>. Это частный, специфичный для компилятора заголовок, который вы не должны включать.

...