题意: 给一个无限大的矩阵往里面放数字。
思路: 略。
AC代码:
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cmath>
#define ll long long
#define llu unsigned long long
#define INF 0x3f3f3f
using namespace std;
const int maxn=50100000;
int main(){
int t; scanf("%d",&t);
ll n; ll x,y;
for(int cas=1; cas<=t; cas++) {
scanf("%lld",&n);
ll c=sqrt(n);
printf("Case %d: ",cas);
if(c%2==0) {
x=c; y=1;
if(c*c==n) {
printf("%lld %lld\n",x,y);
}else {
int f=0;
x++;
ll a=c*c,b=(c+1)*(c+1);
if(n<=a+c+1) {
y=n-a;
printf("%lld %lld\n",x,y);
}
if(n>a+c+1 && n<=b){
y=c+1; x=x-(n-a-c-1);
printf("%lld %lld\n",x,y);
}
}
}else {
x=1,y=c;
if(c*c==n) {
printf("%lld %lld\n",x,y);
}else {
y++;
int f=0;
ll a=c*c,b=(c+1)*(c+1);
if(n<=a+c+1) {
x=n-a;
printf("%lld %lld\n",x,y);
}
if(n>a+c+1 && n<=b){
x=c+1; y=y-(n-a-c-1);
printf("%lld %lld\n",x,y);
}
}
}
}
return 0;
}