
L1-039 古风排版 (20分)
发布日期:2021-05-08 16:27:21
浏览次数:12
分类:精选文章
本文共 1279 字,大约阅读时间需要 4 分钟。
L1-039 古风排版 (20分)
题目
中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。
输入格式:
输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。
输出格式:
按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足N个)。
输入样例:
4This is a test case
输出样例:
asa Tst ihe tsi ce s
思路
坑点:
- 如果最后一列不足,不足的部分空格补齐;
- 如果字符串长度小于每一列的字符数,则不足的部分还是要用空格补齐;
- 用
cin.getline()
读入第二行的非空字符串的时候,最后一个样例点怎么都过不去,把这部分换成getchar
莫名其妙就过了,这点真的很让人疑惑,,,希望有大佬能解答。
主要思路就是,第 i i i 行从右往左,是从 i i i 个字符开始每隔 n n n 个的字符,也就是第 i i i 行第 j j j 列的字符是原字符串第 i + j ∗ n i + j * n i+j∗n 个字符。如果 i + j ∗ n i + j * n i+j∗n 超过了原字符串的长度,用空格补齐。
代码
#include#define INF 0x3f3f3f3f#define PI acos(-1)using namespace std;typedef pair P;typedef long long ll;const int N = 3e5 + 19;const ll mod = 1e9 + 7;char str[N];char tmp[N];int main(){ int n; cin >> n; getchar(); int m = 0; while((str[m] = getchar()) != '\n') { m++; } int cnt = 0; int k = m / n; if(m % n) k++; for(int i = 0; i < n; i++) { int nn = i; while(nn < m) { tmp[cnt++] = str[nn]; nn += n; } for(int i = k - 1; i >= 0; i--) { if(i >= cnt) cout << ' '; else cout << tmp[i]; } cout << endl; cnt = 0; } return 0;}
发表评论
最新留言
不错!
[***.144.177.141]2025年03月24日 01时54分18秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
取消vim打开文件全是黄色方法
2019-03-05
一个系统部署多个tomcat实例
2019-03-05
HP服务器设置iLO
2019-03-05
从头实现一个WPF条形图
2019-03-05
.NET CORE(C#) WPF 方便的实现用户控件切换(祝大家新年快乐)
2019-03-05
C# WPF开源控件库:MahApps.Metro
2019-03-05
使用QT实现一个简单的登陆对话框(纯代码实现C++)
2019-03-05
QT :warning LNK4042: 对象被多次指定;已忽略多余的指定
2019-03-05
GLFW 源码 下载-编译-使用/GLAD配置
2019-03-05
针对单个网站的渗透思路
2019-03-05
Typescript 学习笔记六:接口
2019-03-05
【ASP.NET】ASP.NET中权限验证使用OnAuthorization实现
2019-03-05
02、MySQL—数据库基本操作
2019-03-05
OpenJDK1.8.0 源码解析————HashMap的实现(一)
2019-03-05
MySQL-时区导致的时间前后端不一致
2019-03-05
2021-04-05阅读小笔记:局部性原理
2019-03-05
go语言简单介绍,增强了解
2019-03-05
python file文件操作--内置对象open
2019-03-05
架构师入门:搭建基本的Eureka架构(从项目里抽取)
2019-03-05
MongoDB 快速扫盲贴
2019-03-05