题解:
我们可以知道n*n==x的时候,我们讨论n的奇偶性,我们可以看到奇数在左边,偶数在右边,然后对角线的元素就是(x+1)*x+1。我们知道开方后奇数是顺时针,偶数是逆时针。所以这样就可以判断了。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
signed main()
{
int t; scanf("%d",&t);
int Cas=1;
while(t--){
ll n; scanf("%lld",&n);
ll b=sqrt(n);
if(b*b==n){
if(b&1) printf("Case %d: %lld %lld\n",Cas++,1,b);
else printf("Case %d: %lld %lld\n",Cas++,b,1);
}else{
if(b&1){
ll y=b*(b+1)+1;
if(y>n) printf("Case %d: %lld %lld\n",Cas++,b+1-(y-n),b+1);
else printf("Case %d: %lld %lld\n",Cas++,b+1,b+1-(n-y));
}else{
// cout<<"---"<<b<<endl;
ll y=b*(b+1)+1;
if(y>n) printf("Case %d: %lld %lld\n",Cas++,b+1,b+1-(y-n));
else printf("Case %d: %lld %lld\n",Cas++,b+1-(n-y),b+1);
}
}
}
}