2760561_wa.c

来自「北大大牛代码 1240道题的原代码 超级权威」· C语言 代码 · 共 64 行

C
64
字号
#include <stdio.h>
#include <string.h>
#include <math.h>

int C(int n,int k)
{
    if (k == 0 || k == n)
       return 1;
    return C(n-1,k)+C(n-1,k-1);
}

int main()
{
    int n, i, m, num[100], c[100], sum, pro, q;
    
    while (scanf("%d",&n)!=EOF)
    {
          m = 0;sum = pro = 0;
          memset(num,0,sizeof(num));
          if (n%2==0)
          {
              c[m] = 2;
              while (n%2==0)
              {
                    n /= 2;
                    num[m]++;
              }
              m++;
          }
          q = sqrt(n)+1;
          for (i = 3; i < q&&n!=1; i+=2)
          {
              if (n%i==0)
              {
                  c[m] = i;
                  while (n%i==0)
                  {
                        n /= i;
                        num[m]++;
                  }
                  q = sqrt(n);
                  m++;
              }
          }
          if (n!=1)
          {
             c[m] = n;
             num[m]++;
             m++;
          }
          for (i = 0; i < m; i++)
              sum += num[i];
          printf("%d ",sum);
          pro = 1;
          for (i = 0; i < m-1; i++)
          {
              pro *= C(sum,num[i]);
              sum -= num[i];
          }
          printf("%d\n",pro);
    }
    return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?