HDU4430 ——Yukari's Birthday (二分,快速幂)
来源:互联网 发布:七天天网络 编辑:程序博客网 时间:2024/05/21 08:55
题目链接:点击打开链接
题目大意:一个生日蛋糕上面插入N根蜡烛,然后这个蜡烛可以摆成r圈中心位置可以有<=1根蜡烛,每一圈有k^i根蜡烛,求出来(r * k)最小的r 和 k
解题思路:这道题卡的最严重的就是时间,一旦底数过大,求幂运算就会异常的耗时,就算用了快速幂也不可以,所以就像能不能尽可能少的去求算幂,然后r的范围并不大,所以可以枚举所有的r然后根据r来找出合适的k,寻找的过程可以运用二分来减少时间。
代码:
#include<iostream>#include<cstdio>#include<cstring>using namespace std;long long n;long long r, k;long long Pow(int k, long long r) // K的R次方 // 很神奇这里的k只能用int 类型,不知道为什么!!!!!,求解{ long long ans = 1; long long base = k; while(r != 0) { if(r&1) ans *= base; base *= base; r >>= 1; } return ans;}//long long Pow(int k, long long r)//{// long long ans = 1;// while(r--)// {// ans = ans * k;// }// return ans;//} int seek(int r){ long long left = 2, right = n; long long mid; while(left <= right) { mid = (left + right) / 2; long long sum = 0; for(int i = 1; i <= r; i++) { sum += Pow(mid, i); if(sum > n) break; } if(sum < n-1) left = mid + 1; else if(sum == n || sum == n-1) return mid; else right = mid - 1; } return -1;}int main(){ while(scanf("%lld", &n) != EOF) { long long R = 1, K = n-1; for(long long i = 2; i <= 60; i++) { long long k = seek(i); if(k != -1 ) { if(R * K > i * k) {R = i; K = k;} else if(R*K == i*k) { if(R > i) { R = i; K = k; } } } } cout << R << " " << K << endl; } return 0;}
阅读全文
0 0
- HDU4430 ——Yukari's Birthday (二分,快速幂)
- HDU4430:Yukari's Birthday(二分)
- HDU4430 Yukari's Birthday 二分
- hdu4430 Yukari's Birthday(二分)
- hdu4430 Yukari's Birthday 枚举+二分
- 二分——hdu 4430 Yukari's Birthday
- hdu 4430 Yukari's Birthday(二分)
- hdu 4430——Yukari's Birthday
- Yukari's Birthday(精度处理) (二分)
- HDU 4430 Yukari's Birthday(枚举+二分)
- hdu 4430 Yukari's Birthday 枚举+二分
- hdu 4430 Yukari's Birthday(二分+枚举)
- Hdu 4430 Yukari's Birthday 枚举+二分
- HDU 4430 Yukari's Birthday (二分+枚举)
- zoj 3665 Yukari's Birthday(枚举+二分)
- HDU 4430 Yukari's Birthday 枚举+二分
- HDOJ 4430 Yukari's Birthday 【枚举】+【二分】
- HDU 4430 Yukari's Birthday(枚举+二分)
- HDU3785 寻找大富翁【优先队列】
- F
- tensorflow升级到1.2.1后,cuDNN5.0需升级到5.1版本
- 轻量级自定义圆角ImageView-适配-Android-L
- amd64下的寻址模式
- HDU4430 ——Yukari's Birthday (二分,快速幂)
- python实现发送邮件
- MySQL定义处理程序
- 自主编程实现哈希表
- 判断版本,并给出提示
- ie浏览器的设置
- LeetCode 172 Factorial Trailing Zeroes
- 自己做工具--封装PHP的PDO类--单例模式
- 第二十一天学习javahttp编程