首页 > ACM题库 > HDU-杭电 > hdu 2565 放大的X[解题报告]C++
2014
02-10

hdu 2565 放大的X[解题报告]C++

放大的X

问题描述 :

请你编程画一个放大的’X’。
如3*3的’X’应如下所示:

X X
X
X X

5*5的’X’如下所示:
X X
X X
X
X X
X X

输入:

输入数据第一行是一个整数T,表示有T组测试数据;
接下来有T行,每行有一个正奇数n(3 <= n <= 79),表示放大的规格。

输出:

输入数据第一行是一个整数T,表示有T组测试数据;
接下来有T行,每行有一个正奇数n(3 <= n <= 79),表示放大的规格。

样例输入:

2
3
5 

样例输出:

X X
 X
X X

X   X
 X X
  X
 X X
X   X
 

题目: http://acm.hdu.edu.cn/showproblem.php?pid=2565

 

这个题很简单 但是很容易错,写来给自己一个警示把

首先在最后一个x后面没有空格,然后就是那个换行一直换就好, 我一开始是空格 后来是那个换行出问题,,纠结了半天,,,,

#include <stdio.h>
#include <string.h>

int a[80][80];

int main()
{
   /** freopen("1.txt","w",stdout);*/
    int t;
    int x1,y1,x2,y2,i,j;
    scanf("%d",&t);
    while(t--)
    {
        memset(a,0,sizeof(a));
        int n,t1 = 0;
        scanf("%d",&n);
        x1 = 1,y1 = 1,x2 = 1,y2 = n;
        for(i = 1; i <= n; i++)
            {
                int t1 = 0;
                a[x1][y1] = 1;
                a[x2][y2] = 1;
                if(x1 == x2 && y1 == y2)
                    t1 = 1;
                for(j = 1; j <= n; j++)
                    {
                        if(a[i][j] == 1)
                         printf("X"),t1++;
                      else
                        printf(" ");

                    if(t1 == 2)
                    break;
                    }
                        printf("\n");
             x1++,y1++;
             x2++,y2--;
            }
            printf("\n");
    }
    return 0;
}

 

解题转自:http://www.cnblogs.com/yyroom/archive/2013/08/22/3276288.html


  1. 您没有考虑 树的根节点是负数的情况, 若树的根节点是个很大的负数,那么就要考虑过不过另外一边子树了

  2. 为什么for循环找到的i一定是素数叻,而且约数定理说的是n=p1^a1*p2^a2*p3^a3*…*pk^ak,而你每次取余都用的是原来的m,也就是n