• 分数拆分( Fractions Again, UVA 10976)-ACM


    It is easy to see that for every fraction in the form  (k > 0), we can always find two positive integers x and y,x ≥ 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 givenk?

    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


    这个题目做起来不难,难点在数值精度到问题上,我是参照了这为朋友到讲解

    http://www.2cto.com/kf/201111/111420.html

    /*
     * FractionAgain.cpp
     *
     *  Created on: 2014-8-27
     *      Author: root
     */
    
    #include <iostream>
    #include <vector>
    #include <string>
    #include <cstdio>
    using namespace std;
    bool isInt(double n){
    	double c = n-(int)n;
    	if(n >= 0){
    		if( c < 1e-15 || c < -0.999999999999999 ) {
    			//单精度对应1e-6和6个9,双精度对应1e-15和15个9
    			return true;
    		}
    		else{
    			return false;
    		}
    	}
    	else{
    		 if( -c < 1e-15 || -c < -0.999999999999999 ){
    			 return true;
    		 }
    		 else{
    			 return false;
    		 }
    	}
    
    }
    
    int main(){
    
    	long  k ;
    	vector<string> ans;
    	char str[100];
    	while((cin>>k)  && k != 0){
    		long  max = k << 1;
    		int y;
    		ans.clear();
    		for ( y = k + 1; y <= max; ++y) {
    			double  x = (double)(k*y)/(y - k);
    			if(isInt(x)){
    				sprintf(str,"1/%ld = 1/%d + 1/%d
    ",k,(int)x,y);
    				ans.push_back(str);
    			}
    
    		}
    		int size = ans.size();
    		cout<<size<<endl;
    		for (y = 0;y < size;y++) {
    			cout<<ans[y];
    		}
    	}
    
    	return 0;
    }
    



  • 相关阅读:
    剩下的树
    守形数
    小白鼠排队(map容器插入数据的四种方法)
    字母统计
    与7无关的数
    ZOJ
    基于js的CURD插件
    API验证插件
    Django之权限管理插件
    Django之信号和序列化
  • 原文地址:https://www.cnblogs.com/lvyahui/p/4009956.html
Copyright © 2020-2023  润新知