• Uva


    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 andy 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

    2
    12
    

    Sample Output

    2
    1/2 = 1/6 + 1/3
    1/2 = 1/4 + 1/4
    8
    1/12 = 1/156 + 1/13
    1/12 = 1/84 + 1/14
    1/12 = 1/60 + 1/15
    1/12 = 1/48 + 1/16
    1/12 = 1/36 + 1/18
    1/12 = 1/30 + 1/20
    1/12 = 1/28 + 1/21
    1/12 = 1/24 + 1/24

    遍历y,y的取值是从k+1到2k,每次判断 y * k % (y - k)是否是0,就是判断k之分一减去y分之一能否约分成分子为1的分数,结果用队列存放。

    AC代码:

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cctype>
    #include <cstring>
    #include <string>
    #include <sstream>
    #include <vector>
    #include <set>
    #include <map>
    #include <algorithm>
    #include <stack>
    #include <queue>
    #include <bitset> 
    #include <cassert> 
    
    using namespace std;
    
    queue<pair<int, int> > ans;
    
    int main()
    {
    	int k;
    	while (cin >> k && k) {
    		int cnt = 0;
    		for (int i = k + 1; i <= 2 * k; i++) {
    			long long pro = (long long)i * k;
    			int minus = i - k;
    			if (pro % minus == 0) { // 是否能约分成分子是1的分数
    				ans.push(pair<int, int>(pro / minus, i));
    				cnt++;
    			}
    		}
    		printf("%d
    ", cnt);
    		for (int i = 0; i < cnt; i++) {
    			printf("1/%d = 1/%d + 1/%d
    ", k, ans.front().first, ans.front().second);
    			ans.pop(); // 全部输入就刚好清空了
    		}
    	}
    
    	return 0;
    }




  • 相关阅读:
    13---Net基础加强
    12---Net基础加强
    11---Net基础加强
    10---Net基础加强
    09---Net基础加强
    08---Net基础加强
    07---Net基础加强
    06---Net基础加强
    05---Net基础加强
    04---Net基础加强
  • 原文地址:https://www.cnblogs.com/zhangyaoqi/p/4591551.html
Copyright © 2020-2023  润新知