UVa 10375 - Choose and divide

来源:互联网 发布:捡宝贝淘宝u站 编辑:程序博客网 时间:2024/05/19 09:14

唯一分解, 筛出素数即可。


int p, q, r, s;int e[maxn];void add_int(int n, int d) {    for(int i = 0; i < 1229; i++) {        while(!(n % primes[i])) {            n /= primes[i];            e[i] += d;        }        if(n == 1) break;    }}void add_fac(int n, int d) {    for(int i = 1; i <= n; i++)        add_int(i, d);}int main() {    while(~scanf("%d%d%d%d", &p, &q, &r, &s)) {        memset(e, 0, sizeof(e));        add_fac(p, 1);        add_fac(q, -1);        add_fac(p - q, -1);        add_fac(r, -1);        add_fac(s, 1);        add_fac(r - s, 1);        double ans = 1;        for(int i = 0; i < 1229; i++)            ans *= pow(primes[i], e[i]);        printf("%.5f\n", ans);    }    return 0;}


0 0
原创粉丝点击