NC204434. 完全图
描述
输入描述
第一行包含一个数字,表示测试数据组数
接下来行,每行两个正整数
,
,中间用空格隔开
输出描述
输出行,每行一个整数表示答案
示例1
输入:
2 5 1 5 5
输出:
1 2
C++14(g++5.4) 解法, 执行用时: 51ms, 内存消耗: 504K, 提交时间: 2020-03-22 15:44:45
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { int t;cin>>t; while(t--){ ll n,m;cin>>n>>m; ll l=0,r=n-1; while(l<r){ ll mid=(l+r+1)>>1; if(2*n-mid-1<=2*m/mid) l=mid; else r=mid-1; } cout<<l+1<<"\n"; } return 0; }
pypy3(pypy3.6.1) 解法, 执行用时: 197ms, 内存消耗: 24412K, 提交时间: 2020-03-22 18:24:09
T = int(input()) for tim in range(T): n,m = [int(x) for x in input().split()] temp=max(0,n*(n-1)//2-m) l,r=0,n-1 while l<r: mid=l+r>>1 if (mid*(mid+1)>>1)>=temp: r=mid else: l=mid+1 print(n-l)
Python3(3.5.2) 解法, 执行用时: 819ms, 内存消耗: 3416K, 提交时间: 2020-03-21 21:06:22
T=int(input()) for i in range(1,T+1): n,m=map(int,input().split()) l,r=0,n for j in range(130): mid=(l+r)//2 if mid*n-mid*(mid+1)//2>m: r=mid else: #print(mid) l=mid print(l+1)