Codeforces Round #739 (Div. 3) C. Infinity Table

传送门

思路:

找规律,每一行的第一个数为完全平方数。

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<map>
#include<queue>
#include<math.h>
#include<vector>
using namespace std;
#define ll long long
ll a[100010];

int main()
{
    
    
	int t;
	cin>>t;
	for(int i = 1; i <= 1e5; i++)
	{
    
    
		a[i] = (ll)i*(ll)i;
	}
	while(t--)
	{
    
    
		ll k;
		cin>>k;
		ll cnt = lower_bound(a+1,a+100001,k)-a;
		ll sum = a[cnt];
		if(sum == k)
		{
    
    
			cout<<cnt<<" "<<1<<endl;
		}
		else
		{
    
    
//			sum = a[++cnt];
			if(sum-k+1 > cnt)
			{
    
    
				cout<<(cnt-(sum-cnt+1-k))<<" "<<cnt<<endl;
			}
			else
			{
    
    
				cout<<cnt<<" "<<sum-k+1<<endl;
			}
		}
		
	}
}

猜你喜欢

转载自blog.csdn.net/p15008340649/article/details/119813001