(UVA - 10976)Fractions Again?!(技巧,暴力列舉)
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(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[N],b[N];
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;
}
相關文章
- 藍橋杯——暴力列舉篇
- 【java】【列舉使用技巧】Java
- (桶暴力列舉gcd) CF1627D Not AddingGC
- FractionsFraction
- 6343 密碼鎖 CSP-S 2023年 暴力列舉密碼
- PAT-B 1088 三人行【暴力列舉】
- 5211 導彈攔截 普及組 NOIP2010 暴力列舉
- 小技巧分享:在 Go 如何實現列舉?Go
- Python使用技巧(九):列舉模組enumerate()方法Python
- 分組(狀壓dp+技巧:快速列舉子集)
- Java 列舉、JPA 和 PostgreSQL 列舉JavaSQL
- 列舉
- 『杭電1848』Fibonacci again and againAI
- 列舉和列舉的取值範圍
- 阿斯蒂芬小技巧——列舉子集時間複雜度證明時間複雜度
- Java列舉Java
- scala 列舉
- Enumeration列舉
- 列舉類
- HDU 1848 Fibonacci again and again(SG函式)AI函式
- C# 列舉與位列舉概述C#
- Java 列舉(enum)Java
- 列舉工具類
- Swift-列舉Swift
- TypeScript 列舉enumTypeScript
- 列舉型別型別
- java列舉類Java
- 列舉比較
- TypeScript 列舉指南TypeScript
- 自定義列舉
- Java列舉-通過值查詢對應的列舉Java
- Java enum列舉類詳解 列舉的常見用法Java
- Decade counter againAI
- springboot mybatis列舉配置(每次只需新增一個列舉類即可)Spring BootMyBatis
- HDU 1848 Fibonacci again and again (尼姆博弈+sg函式)AI函式
- iOS 列舉器NSEnumeratoriOS
- Java基礎--列舉Java
- golang 常量與列舉Golang
- TS — 列舉(詳解)