我已经使用此代码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;
}
答案 0 :(得分:1)
只需找出第一个非零值的索引即可跳过前导零:
i = 499;
// Skip leading zeros.
while (i > 0 && arr[i] == 0) {
--i;
}
while (i >= 0) {
cout << arr[i--];
}
此外,请不要#include <bits/stdc++.h>
。这是您不应包含的专用于编译器的专用标头。