HDU 6209 数学
来源:互联网 发布:北京快道网络 董事长 编辑:程序博客网 时间:2024/06/06 15:48
简略题意:问分母在1e5范围内的最简分数中,距离
我们可以先暴力找到最接近k的整数部分,如果直接找到了答案就输出即可。
否则答案即在
然后考虑如何在这段区间找数。
给出闭区间
对于
关于法里数列可以看这里。
#define others#ifdef poj#include <iostream>#include <cstring>#include <cmath>#include <cstdio>#include <algorithm>#include <vector>#include <string>#endif // poj#ifdef others#include <bits/stdc++.h>#endif // others//#define file#define all(x) x.begin(), x.end()using namespace std;const long double eps = 1e-8;//int dcmp(long double x) { if(_abs(x)<=eps) return 0; return (x>0)?1:-1;};typedef long long LL;long double _abs(long double x) { return x<0?-x:x;}namespace solver { int t; LL k; void solve() { scanf("%d", &t); LL a1,a2, b1, b2, m1, m2, A, B; while(t--) { scanf("%lld", &k); LL x = 0; while(x*x*x<k*k) x++; if(x*x*x==k*k) printf("%lld/1\n", x); else { long double tt = k * k; LL au = x-1, bu = x; LL ad = 1, bd = 1; long double minv = 1e60; for(;;) { LL mu = au + bu, md = ad + bd; if(md > 100000) break; long double u = mu, v = md; long double val = u*u*u/v/v/v; if(_abs(val-tt) < minv) { minv = _abs(val-tt); A = mu, B = md; } if(val > tt) bu = mu, bd = md; else au = mu, ad = md; } printf("%lld/%lld\n", A, B); } } }}int main() { solver::solve(); return 0;}
阅读全文
0 0
- HDU 6209 数学
- hdu 4336 数学期望
- hdu 4342 数学规律
- HDU-1286(数学)
- HDU-1124(数学技巧)
- [数学] hdu 4377
- hdu 4373 组合数学
- HDU 1099 数学计算
- hdu 3944 组合数学
- hdu 4045 组合数学
- hdu 2086 数学归纳法
- hdu 1061(数学)
- hdu 4153(数学)
- hdu 1403 (数学)
- hdu 1027(数学)
- hdu 1071 (数学)
- hdu 1066 数学相关
- HDU 4342 水数学
- 241. Different Ways to Add Parentheses
- 【我的Java笔记】第二课
- .NET开发常用工具大汇总
- 不同版本(2.3-3.1)web.xml文件的schema头部声明
- 专访阿里云闵万里:云上逐鹿_ET大脑要做行业化、垂直化的创新运用
- HDU 6209 数学
- [Linux] MySQL 单点安装
- 1063. 计算谱半径(20)
- Linux网络编程服务器模型选择之IO复用循环并发服务器
- Python数据类型,迭代器和生成器
- vim增加格式化功能
- 互联网协议入门(二)
- CentOS6一键升级Python2.7及安装常用工具脚本
- 从程序员到项目经理:为什么要当项目经理