UVA 10976 分數拆分

2021-08-15 00:03:23 字數 692 閱讀 4591

題目描述:

既然要求找出所有的x、y,列舉物件自然就是x、y了。可問題在於,列舉的範圍如何?從1/12=1/156+1/13可以看出,x可以比y大很多。難道要無休止地列舉下去?當然不是。由於x≥y,有 ,因此 ,即y≤2k。這樣,只需要在2k範圍之內列舉y,然後根據y嘗試計算出x即可。

在這需要用到乙個判斷float或者double型數字是否為整數的問題。

對於乙個float或double資料型別,在有效數字以後的位數都是無效的值。

比如 float a=10.00000000000000001;

計算機就會將無效的位數截斷,導致計算機讀取的a就是10;

判斷是否是整數,可以這樣判斷

float a;

#define bord 0.00001

if((a-(int)aint)a>-b))

else

#include

using

namespace

std;

#define bord 0.00000001

#include

int judge(double a)

string s="";

int main()

}ostringstream oss;

oss<}

分數除法 Uva 10976

題目描述 輸入正整數k,找到所有的正整數x y,使得1 k 1 x 1 y 樣例輸入212 樣例輸出 21 2 1 6 1 3 1 2 1 4 1 4 81 8 1 156 1 13 1 8 1 84 1 14 1 8 1 60 1 15 1 8 1 48 1 16 1 8 1 36 1 18 1 ...

UVA 10976 暴力列舉

給定正整數k 1 k 10000 找出所有正整數 x y,使得1 k 1 x 1 y.首先,x,y肯定為整數,所以x,y的取值範圍不能小於k,即左區間為k 1,因為x y,1 x 1 y,即1 k 1 y 1 y,所以,1 k 2 y,所以2k y,所以y的取值範圍就出來了,k 1,2 k incl...

UVA10976摸魚的暴力列舉初步

我一開始的想法超時了.其實想法也還好,裡面有兩個需要優化的地方.1 通常做法是y 2 k 然後從k開始列舉的.其實想一下也是,從二倍然後加加加 2 我 的順序反了 完全不需要stack啊.開兩個陣列存一下就好了,因為你免不了要輸出sum,所以這個儲存繞不開的 哪怕是y倒著開始.或者 是什麼的.3 暴...