(UVA - 10976)Fractions Again?!(技巧,暴力枚举)
2017-08-12 11:24
405 查看
It is easy to see that for every fraction in the form 1
k
(k > 0), we can always find two positive integers
x and y, x ≥ y, such that:
1/k=1/x+1/y
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 (x, y) 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
题意:给定正整数k
分析:x>=y -> 1/x<=1/y
又1/x=1/k-1/y -> 1/k-1/y<=1/y -> 1/k<=2/y -> y<=2k
等式中隐含条件 y>=k
故枚举 k<=y<=2k,当然x不能枚举,直接计算出来是否满足等式,枚举的话TLE
k
(k > 0), we can always find two positive integers
x and y, x ≥ y, such that:
1/k=1/x+1/y
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 (x, y) 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
题意:给定正整数k
(0<k<=10000),找到所有的正整数x>=y 使1/k=1/x+1/y输出等式
分析:x>=y -> 1/x<=1/y
又1/x=1/k-1/y -> 1/k-1/y<=1/y -> 1/k<=2/y -> y<=2k
等式中隐含条件 y>=k
故枚举 k<=y<=2k,当然x不能枚举,直接计算出来是否满足等式,枚举的话TLE
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N=1e3+5; int a ,b ; int main() { int k; while(~scanf("%d",&k)) { int y,cnt=0; for(y=k;y<=2*k;y++) { double x=1.0*k*y/(y-k); if(x==(int)x) { a[cnt]=(int)x; b[cnt]=y; cnt++; } } printf("%d\n",cnt); for(int i=0;i<cnt;i++) printf("1/%d = 1/%d + 1/%d\n",k,a[i],b[i]); } return 0; }
相关文章推荐
- Uva 10976 Fractions Again?! (技巧暴力)
- 暴力枚举 UVA 10976 Fractions Again?!
- UVa - 10976 - Fractions Again?!(暴力求解枚举)
- (暴力枚举) UVa 10976 Fractions Again?!
- UVa--10976 Fractions Again(枚举)
- UVA 10976 Fractions Again?! (暴力预处理)
- UVa 10976 Fractions Again 枚举
- UVA 10976 Fractions Again?(枚举+数学)
- VUa 10976 Fractions Again?! (枚举+暴力水题)
- uva 10976 Fractions Again? 枚举
- UVa 10976----Fractions Again?!(枚举)
- UVa10976-Fractions Again?!(枚举)
- 例题7-3 分数拆分(Fractions Again?!, UVa 10976)
- uva 10976 Fractions Again?!
- UVA 10976 Fractions Again?!
- UVA 10976(p183)----Fractions Again?!
- 分数拆分( Fractions Again, UVA 10976)-ACM
- UVa 10976 Fractions Again?!
- UVA 10976 Fractions Again?!
- UVa 10976 - Fractions Again?!