Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

HowManyZerosAndDigits/허아영

From ZeroWiki
Revision as of 00:16, 27 March 2026 by Maintenance script (talk | contribs) (Repair batch-0002 pages from live compare)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

이야기

2006-01-15 04:52:22 Wrong Answer 0.037 Minimum // <가짜 코드> // N을 팩토리얼 // 그것의 0의 갯수를 샌다. // -> N의 팩토리얼에서 % B 을 0과 비교, N/B 한후 또 % B과 0 비교. // ->N/8이 1보다 작아질 때 까지. count 센다.

이것을 기본으로 하려고 했다. 뒤에 숫자 세는 것만 없었어도 먹히는건데..-_-; 아참. 0의 갯수가 2^31-1 까지라 함은, N의 입력범위를 모르겠다. 그래서 틀린게 아닐까?

5 12 팩토리얼-> 120, 12진수: A0 그러므로 1, 2 출력 해야함


코드

//HowManyZerosAndDigits
// no 10061
#include <iostream>
using namespace std;
#include <math.h>

unsigned int factorial(const unsigned int &num)
{
	unsigned int n = 1, factorialN = 1;
	while(n <= num)
	{
		factorialN *= n++;
	}
	return factorialN;
}

unsigned int main()
{
	unsigned int N, B;
	unsigned int factorialN = 0;
	unsigned int zeroCount = 0, numCount = 0;

	while(cin >> N >> B)
	{
		factorialN = factorial(N);
		while(factorialN >= 1)
		{
			if(factorialN % B == 0)
				++zeroCount;
			else
				;
			++numCount;
			factorialN /= B;
		}
		
		if(N == 0){
			numCount = 0;
			zeroCount = 1;
		}
		cout << zeroCount << " " << numCount << endl;
		
		zeroCount = 0;
		numCount = 0;		
	}
	return 0;
}