您的位置:首页 > 其它

uav10161

2015-10-28 17:05 423 查看
从对角线上入手 比如 con[i+1][i+1]=con[i][i]+2i;

接着每个要找的数字要和对角线元素两两对比夹在大小之间,接着再根据奇偶判断位置

敲的时候发现很多bug 最后被空格换行弄得一直ac不了 我去啊

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int con[10500][10500];

int main(){

memset(con, 0, sizeof(con));
con[0][0] = 1;
for (int i = 0,j=1; i < 1050; i++,j++){
con[i + 1][i + 1] = con[i][i] + 2 * j;
}
int n;
while (cin >> n){
if (n == 0) break;
for (int i = 0; i < 1050; i++){
if (con[i][i] < n && con[i + 1][i + 1] >= n){
if (i % 2 == 0){
int k = n - con[i][i];
if (k>i)
printf("%d %d\n", k-i, i + 2 );
else
printf("%d %d\n", i + 1 - k, 1 + i);
}
else {
int k = n - con[i][i];
if (k > i)
printf("%d %d\n", i + 2, k - i);
else
printf("%d %d\n", i + 1, i + 1 - k);
}
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: