zoj 3665 Yukari's Birthday【二分】
2012-10-16 00:07
357 查看
题意:给出一个数n,18<=n<=10^12,代表有n个蜡烛,要把这n个蜡烛插到蛋糕上,0层最多可以插一个,一共r层,第一层k个,第二层k^2个,……,第r层k^r个,
输出r和k,情况多种输出r*k最小的,r*k最小的有多种输出r最小的。
代码:
输出r和k,情况多种输出r*k最小的,r*k最小的有多种输出r最小的。
代码:
#include<stdio.h> #include<math.h> struct node { long long r; long long k; long long tot; }; int main() { long long n; while(scanf("%lld", &n) != EOF) { struct node data; data.r = 1; data.k = n-1; data.tot = n-1; for(int r = 2; r <= 40; r++) { long long high = (long long)pow(n, 1.0/r); long long low = 2, mid; bool bl = 0; while(low <= high) { mid = (low+high)/2; long long ans; ans = mid*(1-(long long)pow(mid, r))/(1-mid); if(ans == n || ans == n-1) { bl = 1; break; } else if(ans > n) { high = mid - 1; } else { low = mid + 1; } } if(data.tot == mid * r && bl) { data.r = data.r < r ? data.r : r; data.k = data.r < r ? data.k : mid; continue; } if(bl) { data.tot = data.tot < mid * r ? data.tot : mid * r; data.r = data.tot < mid * r ? data.r : r; data.k = data.tot < mid * r ? data.k : mid; } } printf("%lld %lld\n", data.r, data.k); } return 0; }
相关文章推荐
- zoj 3665 Yukari's Birthday(枚举+二分)
- TOJ 4373 HDU 4430 ZOJ 3665 Yukari's Birthday / 二分
- hdu 4430 Yukari's Birthday 枚举+二分
- ZOJ 3665 Yukari's Birthday (2012长春现场赛K题)
- zoj 3665 数论 二分 两个参数
- zoj 3665 Yukari's Birthday(枚举+二分)
- HDU 4430 Yukari's Birthday 二分
- ZOJ 3665 Yukari's Birthday (2012长春现场赛K题)
- HDU 4430 & ZOJ 3665 Yukari's Birthday(二分+枚举)
- ZOJ 3665 Yukari's Birthday(12年长春区域赛-K题-二分)
- zoj 3820 Building Fire Stations(二分+bfs)
- zoj 3279【树状数组+二分】
- zoj 3820 Building Fire Stations (二分+树的直径)
- uva 10122 Mysterious Mountain and ZOJ 1231 Mysterious Mountain (二分+二部图最大匹配)
- ZOJ 4825(二分匹配)
- zoj 2362 Beloved Sons【二分匹配】
- ZOJ 3635 Cinema in Akiba(树状数组 + 二分)
- zoj 3370(二分+二分图染色)
- zoj 3790 Consecutive Blocks 离散化+二分
- 【二分匹配】zoj1654 Place the Robots