poj 3421

#include <iostream>
#include <cstdio>
#include <iomanip>
#include <string>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <set>
#include <vector>
#include <map>
#include <algorithm>
#include <cmath>
#include <stack>

#define INF 0x3f3f3f3f
#define LINF 0x3f3f3f3f3f3f3f3f
#define ll long long
#define ull unsigned long long
#define uint unsigned int
#define l(x) (x<<1)
#define r(x) (x<<1|1)
#define ms(a,b) memset(a,b,sizeof(a))

using namespace std;

ull jc[23];
void init() {
	//应该给jc[0]也赋值
	jc[0] = 1;
	jc[1] = 1;
	for (int i = 2; i < 23; i++)
		jc[i] = jc[i - 1] * i;
}

ull n,so,st,stt;

int main() {
	init();
	while (1) {
		cin >> n;
		//so = st = 1;
		//so应该赋值为0;
		so = 0;
		st = 1;
		//for (int i = 2; i*i < n; i++)
		//应该是i*i<=n而不是i*i<n
		for (int i = 2; i*i <= n; i++) {
			stt = 0;
			while (n%i == 0&&n>0) {
				n /= i;
				stt++;
			}
			so += stt;
			st *= jc[stt];
		}
		

		//cout << so << " " << st << endl;
		cout << so << " " << jc[so] / st << endl;
	}


	return 0;
}

发布了86 篇原创文章 · 获赞 8 · 访问量 2252

猜你喜欢

转载自blog.csdn.net/Fawkess/article/details/103224650
今日推荐