这题挺简单~枚举……依旧暴力
不得不说……我开始怀疑欧拉计划的题目难度了……哎~前面的都是给初中生做的……吧……
犯的错误有#include <math.h> 比较float的数,用了abs……而实际上应该用fabs,罪过罪过……
比较float是否相等,用fabs(a-b)<1e-6
结果我写了1e-10……导致了精度太高……一些正确答案被排除了……shit……
#include <stdio.h>
#include <math.h>
int
main()
{
int i, j;
float original_value, a1, a2, b1, b2;
for (i=11; i<100; i++)
if (i%10 != 0)
for (j=i+1; j<100; j++)
if (j%10 != 0 && i!=j)
{
original_value = i*1.0/j;
a1 = (i/10)*1.0; a2 = 1.0*(i%10);
b1 = (j/10)*1.0; b2 = 1.0*(j%10);
if (a1==a2 && b1==b2)
continue;
if (fabs(original_value-a1/b1)<1e-6 && fabs(a2-b2)<1e-6
|| fabs(original_value-a1/b2)<1e-6 && fabs(a2-b1)<1e-6
|| fabs(original_value-a2/b1)<1e-6 && fabs(a1-b2)<1e-6
|| fabs(original_value-a2/b2)<1e-6 && fabs(a1-b1)<1e-6)
printf("%d/%d %f\n", i, j, original_value);
}
return 0;
}