题解 CF1560C 【Infinity Table】

Chinshyo

2021-08-19 08:47:00

Solution

本题通过找规律就可以发现,**表格第一列都是完全平方数**。如图: ![table](https://cdn.luogu.com.cn/upload/image_hosting/5s8uzefl.png) ~~给您列了这么多或许显而易见了。~~ 我们只要找到最小的比 $k$ 大的完全平方数 $p$ ,再一步步向 $k$ 推即可。 $p$ 的坐标为 $(\sqrt p,1)$ 。 ```cpp #include<bits/stdc++.h> #define debug cout << "Helloworld" << endl using namespace std; int main() { int n; cin >> n; for(long long i = 1; i <= n; i++) { long long p = 1, s; cin >> s; while(p * p < s) p++; //找到找到最小的比k(本程序写为s)大的完全平方数 long long tmp = p * p; long long ar = tmp - s + 1, x = 1, y = p; //ar:还需要移动多少步 for(long long i = 1; i <= ar; i++) { if(i <= p) x++; //向右移 else y--; //向上移 } cout << y << " " << x - 1 << endl; } return 0; } ```