PAT A1031 Hello World for U

PAT A1031 Hello World for U


A1031 Hello World for U

题目
\color{red}{要点}

如何求得n1、n2值
根据2*n1 + n2 = N + 2,对( N + 2 )/3 进行讨论:

  • ( N + 2 )/3 = 0 ,n1 = n2 = ( N + 2 )/3
  • ( N + 2 )/3 = 1,保证 n2 >= n1,多余的1分给n2
  • ( N + 2 )/3 = 2,保证 n2 >= n1,多余的2分给n2

综上n1 = ( N + 2 ) / 3,n2 = ( N + 2 ) / 3 + ( N + 2 ) % 3

    n1 = (length + 2) / 3;
    n2 = (length + 2) / 3 + (length + 2) % 3;


参考代码
#include <cstdio>
#include <cstring>

int main() {
    char s[10005];
    scanf("%s", s);
    int length = strlen(s);
    int n1, n2, spacecounts;
    n1 = (length + 2) / 3;
    n2 = (length + 2) / 3 + (length + 2) % 3;
    spacecounts = n2 - 2;
    for (int i = 0; i < n1 - 1; ++i) {
        printf("%c", s[i]);
        for (int j = 0; j < spacecounts; ++j) {
            printf(" ");
        }
        printf("%c\n", s[length - 1 - i]);
    }
    for (int i = 0; i < n2; ++i) {
        printf("%c", s[n1 - 1 + i]);
    }
    return 0;
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容