題目描述:
既然要求找出所有的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 暴...