首页 > 代码库 > U4699 鸡蛋
U4699 鸡蛋
U4699 鸡蛋
- 0通过
- 37提交
- 题目提供者飞翔
- 标签
- 难度尚无评定
最新讨论
- 暂时没有讨论
题目背景
调皮的kkk准备恶搞他的同学兼朋友——你!
题目描述
kkk准备从楼上扔鸡蛋下来砸在lzn身上,让lzn变成“鸡蛋王子”。但是如果鸡蛋没有破裂,辣么就没有什么好玩的了,所以kkk必须知道鸡蛋最少在哪一层楼上扔下来会摔破。
kkk为了实验事先买了K个鸡蛋(这些鸡蛋的硬度一样),并来到了一个N层高楼上。每次kkk可以拿着一个鸡蛋从t楼扔下去,并观察鸡蛋有没有摔破。如果鸡蛋在第t层楼没有摔破,那么在1..t-1层楼都不会摔破,而且不论在1..t层楼摔多少次鸡蛋都不会破。
lzn马上就要过来了,所以你需要帮kkk求出,她最少要做多少次实验。
输入输出格式
输入格式:
有多组数据,每组数据包含两个整数K和N
输出格式:
对于每组数据输出最少实验次数,如果实验63次还不能成功,输出TLE
输入输出样例
输入样例#1:
2 1001 100
输出样例#1:
14TLE
说明
1<=K<=100
1<=N<2^64
题解:
数据范围太大,二分就拜拜了。
只能用考虑dp or递推。
然后自己软腿就推出来了。
f[i][j]表示i个鸡蛋扔j次恰好是f[i][j]层随
转移f[i][j]=f[i][j-1]+f[i-1][j-1]+1;
AC代码:
#include<iostream>#include<cstdio>using namespace std;long long f[105][3001];long long k,n;int main(){ for(int a=1;a<=101;a++) for(int b=1;b<=3000;b++) f[a][b]=f[a][b-1]+f[a-1][b-1]+1; while(cin>>k>>n){ bool flag=0; for(int a=0;a<=63;a++) if(f[k][a]>=n){ flag=1; printf("%d\n",a); break; } if(!flag) printf("TLE\n"); } return 0;}
U4699 鸡蛋
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。