Fractions Again?!(暴力)

来源:互联网 发布:linux wc grep 编辑:程序博客网 时间:2024/05/29 03:14

Problem A: Fractions Again?!

Time limit: 1 second

It is easy to see that for every fraction in the form  (k > 0), we can always find two positive integers x and yx ≥ y, such that: 

.

Now our question is: can you write a program that counts how many such pairs of x and y there are for any given k?

Input

Input contains no more than 100 lines, each giving a value of k (0 < k ≤ 10000).

Output

For each k, output the number of corresponding (xy) pairs, followed by a sorted list of the values of x and y, as shown in the sample output.

Sample Input

212

Sample Output

21/2 = 1/6 + 1/31/2 = 1/4 + 1/481/12 = 1/156 + 1/131/12 = 1/84 + 1/141/12 = 1/60 + 1/151/12 = 1/48 + 1/161/12 = 1/36 + 1/181/12 = 1/30 + 1/201/12 = 1/28 + 1/211/12 = 1/24 + 1/24


Problemsetter: Mak Yan Kei

AC代码

#include <cstdio>#include <iostream>#include <cstring>#include <cmath>#define MAXN 10000typedef long long ll;ll a[MAXN], b[MAXN];int main(){    ll k;    while(scanf("%lld", &k) != EOF)    {        ll y = 1, cnt = 0;        memset(a, 0, sizeof(a));        memset(b, 0, sizeof(b));        for(y = k + 1; y <= 2 * k; y++)        {            double x = 1.0 / (1.0 / k - 1.0 / y);            ll xint = (ll)(x + 0.5);            if(x >= 0 && fabs(x - xint) < 1e-4)            {                a[cnt] = xint;                b[cnt] = y;                cnt++;            }        }        printf("%d\n", cnt);        for(int i = 0; i < cnt; i++)        {            printf("1/%lld = 1/%lld + 1/%lld\n", k, a[i], b[i]);        }    }    return 0;}














0 0