uav10161

来源:互联网 发布:西岐网络新三板 编辑:程序博客网 时间:2024/06/10 07:04

从对角线上入手   比如 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 );elseprintf("%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);elseprintf("%d %d\n", i + 1, i + 1 - k);}}}}return 0;}


0 0
原创粉丝点击