CodeForces
来源:互联网 发布:财务评价软件 编辑:程序博客网 时间:2024/06/06 11:46
Problem Description
给你n个用户,和k-1个管道转换器,分别1转换为2,3,……k;
问你至少需要多少个转换器就可以满足用户需求
Input
4 3
5 5
8 4
Output
2
1
-1
代码:
#include<iostream>using namespace std;long long n, k;//sum = 1 + 2 - 1 + 3 - 1 …… + k - 1 = 1 + 1 + 2 + 3 + …… + k - 1;int judge(long long n1){ long long b = k - n1; long long sum = (b + k - 1) * n1 / 2 + 1;//等差数列求和 + 1 return sum >= n;//代表能满足用户}int search(){ if(!judge(k - 1)) return -1;//不满足 if(judge(0)) return 0;//满足 int i = 0, j = k - 1;//i是不满足,j是满足 while(i < j) { int mid = (i + j) / 2; if(judge(mid)) j = mid;//满足 缩小需要的管道数 else i = mid; if(i == j - 1) return j; }}int main(){ while(cin >> n >> k) { cout << search() << endl; } return 0;}
0 0
- codeforces~~~
- Codeforces
- codeforces
- Codeforces
- codeforces
- codeforces
- Codeforces
- Codeforces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- 51nod 2级算法题-1095
- 第1章信号完整性分析概论----基本定义和四类噪声问题
- 第五次上机作业
- 在系统里设置文件默认打开APP
- OpenGL鼠标交互
- CodeForces
- ES6 Promise 对象理解
- 用maven创建一个Web project
- C++编码规范------命名约定
- Android-实现背景渐变动画
- bzoj3306 树
- 开机自启动(整合)
- 化简方程
- 第十天2017/04/25(2、企业财富库:)