UVA 10161

来源:互联网 发布:手机网络的图标怎么换 编辑:程序博客网 时间:2024/05/19 11:46

题目大意:按照图的方式排数,输入一个数,输出这个数的位置。

解题思路:斜对角线有规律,其位置的坐标为奇数时往左变大,往下变小,偶数时往左变小,往下变大。来输出,因为范围比较大,所以要100000

ac代码:

#include <iostream>using namespace std;int a[100005]={0, 1, 3}, goal;int main(){for (int i=3, n=4; i<100005; i++,n+=2)a[i] = a[i-1] + n;while (scanf("%d", &goal)!=EOF && goal){for (int i=1; i<100005; i++)if (goal > a[i]-i && goal < a[i]+i){if (i % 2)if (goal > a[i]-i && goal <= a[i])printf("%d %d\n", i, i-(a[i]-goal));elseprintf("%d %d\n", i-(goal-a[i]), i);elseif (goal > a[i]-i && goal <= a[i])printf("%d %d\n", i-(a[i]-goal), i);elseprintf("%d %d\n", i, i-(goal-a[i]));break;}}return 0;}
原创粉丝点击