Что не так с этим кодом?Я новичок в CodeChef, и он говорит, что мой вывод не является правильным - PullRequest
0 голосов
/ 23 сентября 2019

Я новичок в CodeChef и решаю раздел для начинающих на C lang.Я написал код для задачи =>

Вас просят вычислить факториалы некоторых небольших натуральных чисел.

Ввод
Целое число t, 1 <= t <= 100, обозначая количество тестовых случаев, за которыми следуют t строк, каждая из которых содержит одно целое число n, 1 <= n <= 100. </p>

Output
Для каждого целого числа n, указанного на входе, отобразите строку сзначение n!

Я получаю правильный вывод, но мой код не принимается.Пожалуйста, помогите.

#include <stdio.h>

void fact(int x) {
    int temp = 1;

    if(x<=1) {
        printf("%d\n", x);
    } else {
      for (int i=1; i<=x; i++) {
        temp *= i;
      }   
      printf("%d\n", temp);  
    }
}

int main(void) {
    int n;
    int t;

    scanf("%d", &t);

    if(t>=1 && t<=100) {
      while(t--) {
        scanf("%d", &n);
        if (n>=1 && n<=100) {
          fact(n);
        }
      }
    }

    return 0;
}
Sample input:
4
1
2
5
3

Sample output:
1
2
120
6

1 Ответ

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

100! составляет около 9e157, и тогда он не может быть представлен int (даже 64 битами).Он даже не может быть представлен unsigned long long.

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

Если вы хотите получить точное значение, вы должныреализовать собственную целочисленную структуру или использовать массивы целых чисел и реализовать умножение на них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...