题解 | #尼科彻斯定理#

尼科彻斯定理

https://www.nowcoder.com/practice/dbace3a5b3c4480e86ee3277f3fe1e85

#include <stdio.h>
#include <stdlib.h>

/*
 * m * m 为中间那个数往前后算,m为奇数±2*i,m为奇数±(2*i + 1),
 */

int compar(const void* str, const void* str2)
{

    return (*(int *)str - *(int *)str2);
}

int main() {
    int m;
    int i, j;
    int aa[100] = {0};

    while (scanf("%d", &m) != EOF) {

        if (m == 1) {
            aa[0] = m*m;
        } else if (m == 2) {
            aa[0] = m*m - 1;
            aa[1] = m*m + 1;
        } else if (m % 2 != 0) {
            aa[0] = m * m;
            for (j = 1; j <= m / 2; j += 1) {
                aa[2*j - 1] = m * m - 2* j ;
                aa[2*j] = m * m + 2* j ;
            }
        } else {
            for (j = 0; j < m / 2; j += 1) {
                aa[j*2] = m * m - 2*j - 1 ;
                aa[j*2 + 1] = m * m + 2* j  + 1;
            }
        }

        qsort(aa, 100, sizeof(int), compar);

        for(i = 0; i < 100; i ++) {
            if (aa[i] != 0) {
                printf("%d", aa[i]) ;
                if (aa[i+1] != 0) {
                    printf("+") ;
                }
            }
        }

    }
    return 0;
}

全部评论

相关推荐

头像
11-09 17:30
门头沟学院 Java
TYUT太摆金星:我也是,好几个华为的社招找我了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务