uva11428(数论+二分)
来源:互联网 发布:海贼同盟红叶知玄 编辑:程序博客网 时间:2024/05/17 15:36
题意:
给出n,求n=x^3 - y^3 的最小的(x,y);
思路:
一直想要推出公式,或者找到规律,后来看了题解,原来数论有时候也是要靠枚举的,虽然是二分枚举;
首先我们第一步把这个式子分解一下
x^3 - y^3 = (x-y)(x^2 + xy + y^2);
因为n < 10000 所以(x-y)和(x^2 + xy + y^2)也是小于10000;
因为x>y,所以(x^2 + xy + y^2) > 3y^3;
所以y的范围是0到60;
然后二分整数区间(y,y+10000)求x
#include <cstdio> #include <cstring>#define ll long longint binary_search(int n, int y) {ll l = y + 1, r = y + 10000, x, k;while (l <= r) {x = (l + r) / 2;k = (x - y) * (x * x + x * y + y * y);if (k == n) return x;if (k < n) l = x + 1;if (k > n) r = x - 1;}return -1;}int main() {int n,x; while (scanf("%d", &n) && n) {x = -1;for (int y = 0 ; y < 60 ; y++) {x = binary_search(n ,y);if (x != -1) {printf("%d %d\n", x, y);break;}}if (x == -1) printf("No solution\n");} return 0; }
0 0
- uva11428(数论+二分)
- 11.1 考试 数论+数论+二分
- FZU 1988 二分+数论
- SPOJ_TBATTLE:Thor_vs_Frost_Giants(数论+二分)
- SPOJ FACVSPOW 数论+二分
- SPOJ FACVSPOW(数论+二分)
- Toxophily-数论以及二分三分
- 154. Factorial (二分+数论)
- 数论:二分快速取余
- poj1845 (数论+二分快速取模)
- HDU 2276(数论,构造二分矩阵)
- HDU 2256(数论,构造二分矩阵)
- CodeForces 75C Modified GCD 【二分+数论】
- [数论+二分求等比数列]POJ 1845 Sumdiv
- hdu 5042 GCD pair(数论 + 二分)
- zoj 3665 数论 二分 两个参数
- UVA138(数论问题二分打表)
- POJ - 1905-Expanding Rods-数论-二分&几何
- linux(CentOS)下Mrtg的安装詳解
- 高性能的敏感词过滤算法 可以忽略大小写、全半角、简繁体、特殊符号干扰 (二)
- 日期和天数算出推迟后的日期
- Static关键字简析
- Eclipse断点调试
- uva11428(数论+二分)
- How to Make an iOS VoIP App With Pjsip: Part 1
- hdu 1009:FatMouse' Trade
- C++语言函数不能嵌套定
- UVA 10499 The Land of Justice
- How to Make an iOS VoIP App With Pjsip: Part 2
- iOS KVC详细讲解(刚刚)
- JSTL时间操作及时间比较
- 不容易掌握的几个ng内置标签