蓝桥2020国赛真题阶乘约数

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

定义阶乘 n! = 1 × 2 × 3 × · · · × n 

请问 100!(100 的阶乘)有多少个正约数。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

 对于约数的求法:将100!拆成多个最小质数相乘,他们的(乘幂加一)之积就是约数个数

如  180

拆成  2*2*3*3*5

最后约数个数就是   (1+2)*(1+2)*(1+1)=18

code:

#include
using namespace std;
typedef long long ll;
ll a[105];
int main()
{
    ll sum = 0;
    for (int i = 2; i <= 100; i++)
    {
        int ss = i;
        for (int j = 2; j <= ss; j++)
        {
            while (ss % j==0&&ss!=0)
            {
                a[j]++;
                ss /= j;
            }
        }
    }
    sum = a[2] + 1;
    for (int i =3; i <= 100; i++)
    {
        sum *= (a[i] + 1);
    }
    cout << sum << endl;
    return 0;
}

你可能感兴趣的:(c++,算法,数据结构)