本文主要是介绍POJ 1183 / Noi 01 反正切函数的应用 (等式变形 能否有比O(a)更快的算法?),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
反正切函数的应用
Time Limit: 1000MS
Memory Limit: 10000K
http://poj.org/problem?id=1183
由题意得等式
(c-a)(b-a)=a2+1
(注意xy+Dx+Ey+F=0的等式都可以化为(x+E)(y+D)=DE-F的形式)
然后令m=c-a,求出当m|(a2+1)时的b-a=(a2+1)/m,所以c+b = m+a+(a2+1)/m+a = ((a+m)2+1)/m
(话说能否有比O(a)更快的算法?)
完整代码:
/*0ms,132KB*/#include<cstdio>
#include<cmath>int main()
{__int64 a, m;scanf("%I64d", &a);for (m = a; (a * a + 1) % m; --m);printf("%I64d\n", ((a + m) * (a + m) + 1) / m);return 0;
}
这篇关于POJ 1183 / Noi 01 反正切函数的应用 (等式变形 能否有比O(a)更快的算法?)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!