콘솔창 & 윈도우창/코딩 테스트
백준 6463 팩트 C++
뽀또치즈맛
2024. 5. 29. 11:46
https://www.acmicpc.net/problem/6463
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <stack>
#include <iomanip>
#include <cmath>
using namespace std;
int lastNonZeroDigitOfFactorial(int n) {
int result = 1;
int two_count = 0, five_count = 0;
for (int i = 1; i <= n; ++i) {
int num = i;
while (num % 2 == 0) {
++two_count;
num /= 2;
}
while (num % 5 == 0) {
++five_count;
num /= 5;
}
result *= num;
result %= 10;
}
for (int i = 0; i < two_count - five_count; i++) {
result *= 2;
result %= 10;
}
return result;
}
int main()
{
int num;
while (cin >> num || !cin.eof()) {
int lastNonZeroDigit = lastNonZeroDigitOfFactorial(num);
cout << setw(5) << num;
cout << " -> ";
cout << lastNonZeroDigit << endl;
}
return 0;
}