寒假训练--训练赛2--冰冰的生日
来源:互联网 发布:jsp登陆界面源码 编辑:程序博客网 时间:2024/05/21 22:35
冰冰的生日
Time Limit: 1000MS Memory limit: 65536K
题目描述
冰冰马上要过生日啦!要知道,冰冰是个爱面子的人,所以他请了好多朋友来参加他的生日,因为生日上最重要的就是吃蛋糕啦!而且,蛋糕上的蜡烛也是重中之重,那么多朋友来了,如果蜡烛插得不好看,多丢人啊!所以冰冰想到了可以插成n(n>=1)个同心圆。那样的话美观又大方,当然了,圆心可以插可以不插,第i个圆上有k的i次方根蜡烛(1 ≤ i ≤ n),虽然满足这个条件的n和k有很多,但是,需要你输出n*k最小时n和k的值。如果有相同的n*k,那就输出n小的那个。
输入
多组测试数据,每组测试数据只包含一个数字s(18 ≤ s ≤ 10^12).
输出
对于每组测试,输出n和k。
示例输入
183151
示例输出
1 174 21 50
提示
n最小为1 ,当k为2时,s为10^12 == 2^50 n最大为50 ; k最小为2 , 最大为10^12,在n的for循环里, 用二分来找合适的k值,并存下k*n最小时的值
来源
lwn
示例程序#include <stdio.h>int main(){ long long n , i , k , s , low , mid , high , sum , pn , pk , flag ; while(scanf("%lld", &s)!=EOF) { for(n = 1 ; n <= 50 ; n++) { low = 1 ; high = s ; mid = (low+high)/2 ; flag = 0 ; while(low < high) { k = 1 ; sum = 0 ; for(i = 1 ; i <= n ; i++) { k *= mid ; sum += k ; } if(sum == s || sum +1 == s) { flag = 1 ; break; } else if( sum + 1 < s) low = mid +1 ; else high = mid - 1 ; mid = (low+high)/2 ; } if(flag) { if(n==1) { pn = n ; pk = mid ; } else if(pn*pk > mid * n) { pn = n ; pk = mid ; } } } printf("%lld %lld\n", pn, pk); }}
0 0
- 寒假训练--训练赛2--冰冰的生日
- 寒假训练---训练赛2--Fighting
- 寒假训练--训练赛2--Good Luck!
- 寒假训练--训练赛2--加密术
- 20160202寒假训练赛2
- 寒假训练--训练赛2--小P寻宝记
- 寒假训练的小总结
- 寒假训练--图的基本知识
- 寒假训练:大数的阶乘。
- 寒假训练的一道题:
- 寒假训练--训练赛2--我跳我跳我跳跳跳
- 寒假的ACM训练(一)
- 2015寒假训练赛一-D题
- 2016.1.26寒假训练赛1
- 寒假训练赛(三) 自我总结
- 寒假训练赛(四) 自我总结
- 寒假训练赛(五) 自我总结
- 2014寒假训练计划
- Hdu1053 step5.2.8(哈夫曼树)
- Android 混编 防止 反编译
- 657 - The die is cast(dfs)
- UVaOJ-674 Coin Change (完全背包)
- 去大公司实习还是去创业公司实习好?
- 寒假训练--训练赛2--冰冰的生日
- Android上用模板方法模式实现具有自动重用View功能的Adapter
- java中使用log4j 2
- Solr的HBase多条件查询
- windows下用Python连接mysql报错问题“MySQLdb in Python: “Can't connect to MySQL server on 'localhost'””
- 题目63:猴子下落
- Java(一)简介
- python的inspect模块
- 第二章 Spring框架体系结构(Spring Framework3.1教程)