首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Divisors 欧拉函数的运用

2012-09-03 
Divisors 欧拉函数的应用#include stdio.h#include cstring#define mm 500bool fuck[mm]int wokao[mm

Divisors 欧拉函数的应用

#include <stdio.h>#include <cstring>#define mm 500bool fuck[mm];int wokao[mm][100];long long ca[mm][mm];int p[100];int main(){    int t=0,x,n;    memset(fuck,0,sizeof(fuck));    fuck[0]=fuck[1]=0;    for(int i=2; i<=mm; i++)    {        if(!fuck[i]) p[t++]=i;        for(int j=0; j<t&&i*p[j]<mm; j++)        {            fuck[i*p[j]]=true;            if(!(i%p[j])) break;        }    }    memset(wokao,0,sizeof(wokao));    for(int i=0; i<t; i++)        for(int j=2; j<mm; j++)            wokao[j][i]=j/p[i]+wokao[j/p[i]][i];    for(int i=2; i<mm; i++)        for(int j=1; j<i; j++)        {            ca[i][j]=1;            for(int k=0; k<t&&wokao[i][k]; k++)            {                int a=wokao[i][k]-wokao[j][k]-wokao[i-j][k];                if(a)                {                    ca[i][j]*=(a+1);                }            }        }    while(scanf("%d%d",&n,&x)==2)    {        if(x==0||x==n)        {            printf("1\n");            continue;        }        printf("%lld\n",ca[n][x]);    }    return 0;}

热点排行