题目:http://www.lightoj.com/volume_showproblem.php?problem=1023
题意:给一个数n,把n!写成因子相乘的形式,* a (b)意味a是n!的因子,b是n!中a的个数
思路:数据范围很小,直接暴力分解因子即可
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
const int N = 110;
int cas;
int main()
{
int t, n;
scanf("%d", &t);
while(t--)
{
int num[N];
memset(num, 0, sizeof num);
scanf("%d", &n);
for(int i = 2; i <= n; i++)
{
int m = i, j = 2;
while(m != 1)
{
while(m % j == 0) num[j]++, m /= j;
j++;
}
}
printf("Case %d: %d = ", ++cas, n);
bool flag = false;
for(int i = 2; i <= n; i++)
if(num[i])
{
if(!flag) printf("%d (%d)", i, num[i]), flag = true;
else printf(" * %d (%d)", i, num[i]);
}
printf("\n");
}
return 0;
}