分数拆分

Posted Tina

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分数拆分相关的知识,希望对你有一定的参考价值。

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

 法一:

#include<cstdio>
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
   int k,n;
   while( ~scanf("%d",&k))
   { 
   int cnt=0;
    if(k==0) return 0;
   
   for(int i=k+1;i<=2*k;i++)
   {
       if(((i*k)%(i-k))==0) cnt++; 
   }
    printf("%d\\n",cnt);
   for(int i=k+1;i<=2*k;i++)
   {
        printf("1/%d = 1/%d + 1/%d\\n",k,(i*k)/(i-k),i);
   }
}
    return 0;
}

法二:

 

#include<cstdio>
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<pair<int,int> > vec;
int main()
{
    int n,x,y;
    while(~scanf("%d",&n))
    {
        vec.clear();
        int cnt=0;
        for(int i=n+1;i<=2*n;i++)
        {
            if((i*n)%(i-n)==0)
            {
                x=i;
                y=i*n/(i-n);
                if(x<y) swap(x,y);
                vec.push_back(make_pair(x,y));
                cnt++;
            }
        }
    
    sort(vec.begin(),vec.end());
    printf("%d\\n",cnt);
    for(int i=cnt-1;i>=0;i--)
    printf("1/%d = 1/%d + 1/%d\\n",n,vec[i].first,vec[i].second);
}
     return 0;
}

 

AC题总结:

1.最后输出格式要与题意一致

2.时间超时的时候注意方法

3.输入scanf的返回值判断

以上是关于分数拆分的主要内容,如果未能解决你的问题,请参考以下文章

分数拆分

Spark内存分数与年轻一代/老一代java堆拆分

java-分数拆分

为啥将拆分为 wav 文件的旋律转换为拆分的 mp3 会在片段边界处产生不好的声音?

pandas GroupBy上的方法apply:一般性的“拆分-应用-合并”

将 JavaScript 字符串拆分为固定长度的片段