hdu 5430 Reflect(欧拉函数)

来源:互联网 发布:淘宝裕伟专卖店女装 编辑:程序博客网 时间:2024/05/21 14:58

题意:

从镜面材质的圆上一点发出一道光线反射N次后首次回到起点。
问本质不同的发射的方案数。

解析:

这里写图片描述

my code

#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N = (int)1e6 + 5;int phi[N], n;void phi_table() {    memset(phi, 0, sizeof(phi));    phi[1] = 1;    for(int i = 2; i <= N; i++) {        if(phi[i]) continue;        for(int j = i; j <= N; j += i) {            if(!phi[j]) phi[j] = j;            phi[j] = phi[j] / i * (i-1);         }    }}int main() {    phi_table();    int T;    scanf("%d", &T);    while(T--) {        scanf("%d", &n);        printf("%d\n", phi[n+1]);    }    return 0;}
0 0
原创粉丝点击