Problem pojawił się podczas zgłaszania zadania FCTRL2. Tutaj mój kod:
#include <bits/stdc++.h>
using namespace std;
void fctrl(int n)
{
vector<char> factorial;
for(int i=n; i>0; i/=10) {
factorial.push_back(i%10);
}
for(int i=1; i<n; i++) {
int temp = 0;
for(int index=0; index<factorial.size(); index++) {
int x = factorial[index] * i + temp;
factorial[index] = x % 10;
temp = x / 10;
}
for(int i=temp; i>0; i/=10)
factorial.push_back(i % 10);
}
for(int i=factorial.size()-1; i>=0; i--)
printf("%d",factorial[i]);
printf("\n");
}
int main()
{
short n, t;
scanf("%d", &t);
while(t--) {
scanf("%d", &n);
if(n==0) printf("1\n");
else fctrl(n);
}
return 0;
}
Dla dokładnie tych samych danych wejściowych program działa u mnie bez zarzutu (używam domyślnego kompilatora Code Blocks). Po próbie odpalenia tego samego kodu na ideone, wyświetla się jedynie “1” (warunek if). Link do kodu.
Zakładam że problem leży gdzieś w doborze kompilatora, niestety nie znam się na tym dobrze. Próbowałem różnych wersji gcc u siebie i na SPOJ’u, lecz za każdym razem dzieje się to samo…
.