题目大意:给出数字,求该数字在矩阵中的位置
解体思路:蛋疼的规律找到就可以,对角线是以1为开头,后面公差为2的等差数列的和
#include<cstdio>
int main() {
// int n, x, y, number;
// scanf("%d", &n);
// int a[100][100];
/* for(int i = 0, j = n -1; j >= 0; j--,i++) {
number = 1 + (j + 1) * j;
a[i][j] = number;
if(j % 2 == 0) {
int add = 1;
int fu = -1;
for( y = j - 1; y >= 0; y--) {
a[i][y] = number + add;
add++;
}
for( x = i + 1; x < n; x++) {
a[x][j] = number + fu;
fu--;
}
}
else{
int add = 1;
int fu = -1;
for(y = j - 1; y >= 0; y--) {
a[i][y] = number + fu;
fu--;
}
for(x = i + 1; x < n; x++) {
a[x][j] = number + add;
add++;
}
}
}
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++)
printf("%d\t",a[i][j]);
printf("\n");
}
*/
int num;
int number;
while(scanf("%d", &num) != EOF && num) {
for(int i = 0; ;i++) {
number = 1 + (i + 1) * i;
if(number - i <= num && num <= number + i) {
int move = num - number;
// printf("move is %d\t i is %d\n", move, i);
if( i % 2 == 0)
if(move >= 0)
printf("%d %d\n",i+1-move,i+1);
else
printf("%d %d\n",i+1,i+1+move);
else
if(move >= 0)
printf("%d %d\n",i+1,i+1-move);
else
printf("%d %d\n",i+1+move,i+1);
break;
}
}
}
return 0;
}