题目

一开始没看懂“as squared as possible”和那个max不等式到底是什么意思,看了别人的解答才明白:

  • 如果n % 3 == 0,n正好被3整除,直接n1 = n2 = n3
  • 如果n % 3 == 1,因为n2要比n1大,所以把多出来的那1个给n2
  • 如果n % 3 == 2,就把多出来的那2个给n2

题解

import java.util.Scanner;public class Main {public static void main(String[] args) {String str = new Scanner(System.in).nextLine();Spuare s = new Spuare(str);s.print();}
}class Spuare {String str;int len;// 总长int n1;// 左int n2;// 下int n3;// 右// 如果n % 3 == 0,n正好被3整除,直接n1 = n2 = n3// 如果n % 3 == 1,因为n2要比n1大,所以把多出来的那1个给n2// 如果n % 3 == 2,就把多出来的那2个给n2public Spuare(String str) {this.str = str;this.len = str.length();int n = len + 2;if (n % 3 == 0) {n1 = n2 = n3 = n / 3;} else if (n % 3 == 1) {n1 = n3 = n / 3;n2 = n1 + 1;} else {n1 = n3 = n / 3;n2 = n1 + 2;}}// 打印public void printSpace() {for (int i = 0; i < n2 - 2; i++) {System.out.print(" ");}}public void print() {// 侧边for (int i = 0; i < n1 - 1; i++) {System.out.print(str.charAt(i));printSpace();System.out.println(str.charAt(len - 1 - i));}// 底边for (int i = n1 - 1; i <= len - n1; i++) {System.out.print(str.charAt(i));}}}

附:各种长度的排列情况,便于理解

o o
oooo  o
ooooo o
o o
oooo  o
o  o
ooooo   o
o   o
oooooo  o
o  o
o  o
ooooo   o
o   o
o   o
oooooo    o
o    o
o    o
ooooooo   o
o   o
o   o
o   o
oooooo    o
o    o
o    o
o    o
ooooooo     o
o     o
o     o
o     o
ooooooo

【PAT甲级 U形打印】1031 Hello World for U (20 分) Java版 6/6通过相关推荐

  1. 【PAT甲级 进制转换】1019 General Palindromic Number (20 分) Java版 7/7通过

    题目 这道题可以说是非常友善了,说白了是个水题.题目没什么坑,一次通过,主要思想就是: 输入两个数:num和base 将num按照base进制转换,得到arr 判断arr是否是一个回文数,并且输出这个 ...

  2. 【PAT甲级 ArrayList存放class】1011 World Cup Betting (20 分) Java版 3/3通过 四舍五入保留两位小数

    题目 一共给9个数,3*3,找到每行最大,按照题目要求套算式,计算就行 坑 & 心得 没啥坑,一次通过,用到的知识点是:自定义排序.四舍五入保留两位小数 DecimalFormat df = ...

  3. 【PAT甲级 StringBuilder的使用】1005 Spell It Right (20 分) Java版 7/7通过

    题目 挺简单的,是个水题 坑 & 心得 一开始switch (i)忘了写case 0的情况,导致两个测试点没通过,不过很快就发现了 int 类型的 sum 转换为 str 的方式:用空字符串拼 ...

  4. 【PAT甲级 进位相加】1058 A+B in Hogwarts (20 分) C 全部AC

    题目 进位相加 题解 C #include<stdio.h> int main() {int a1, b1, c1;int a2, b2, c2;int a3, b3, c3;scanf( ...

  5. 【PAT甲级 替换指定字符】1035 Password (20 分) Java版 4/4通过

    题目 这个题挺简单,意思就是把所有的1替换成@,0替换成%等等 读题要仔细,输出格式方面有几个小坑: 末尾不要有多余的空格.换行 如果替换了,要在第一行输出替换的条数 如果没替换,要把题目给的字符串拼 ...

  6. 【PAT甲级 十进制转十三进制】1027 Colors in Mars (20 分) Java版 5/5通过

    题目 是个水题,一次通过. 这道题的大意就是:给你输入3个十进制的数,让你转换成3个十三进制数.在转换的时候,注意不足两位的要用0补全两位. 小坑 提交之前,想起来自查一下我的convert(int ...

  7. 【PAT甲级 BigInteger】1019 General Palindromic Number (20 分) Java版 7/7通过

    题目 一开始只使用了Long,有后面四个测试点过不去,后来换了BigInteger,就通过了. 这题用Java的BigInteger做,可以操作任意长度的数字,感觉有一点取巧了. 如果C或者C++的话 ...

  8. 【PAT甲级 素数判断 进制转换】1015 Reversible Primes (20 分) Java版 4/4通过

    题目 思路: 为了提高效率,判断素数采用打表的方式 先计算100000以内的所有素数,然后如果要判断一个数是否为素数的话,直接与表中比对 题目中的意思是: 首先,判断一个数N1是否为素数 如果N1是素 ...

  9. 【PAT甲级 Date时间比较】1006 Sign In and Sign Out (20 分) Java版 5/5通过

    题目 水题. 给出几个人的进入时间和离开时间,找到他们谁是最先进入的,谁是最后离开的. 思路 用ArrayList存放所有人,然后排序,第一次按照进入时间排序,输出排序后第一个人的id,第二次按照离开 ...

最新文章

  1. Java的知识点9——this关键字
  2. 双拓扑排序 HDOJ 5098 Smart Software Installer
  3. TCP/IP协议详解 卷一(阅读指导)
  4. mvn使用assembly打包所有的moudle为一个tgz文件
  5. 【cocos2d-x】对CCSprite进行高斯模糊
  6. 【图像去噪】基于matlab GUI多种滤波器图像去噪【含Matlab源码 1778期】
  7. Windows Terminal 设置背景图片
  8. 未来无生经超级计算机,最强崩坏系统
  9. 极大极小搜索算法 minimax search
  10. 直接在pocket pc上编译c#程序
  11. java scavenge_Java虚拟机(JVM)垃圾回收器Parallel Scavenge收集器 - Break易站
  12. 英语手记——持续更新
  13. 今天你吃粽子了吗?快进来看看你都吃过哪一种粽子吧
  14. (干货)全面分析6大国产CPU处理器
  15. QT5.8 中创建插件时Q_INTERFACES提示Undefined interface
  16. 进程与应用程序的区别
  17. pbe近似_pbe近似_科学网—[转载]赝势及泛函介绍(1) - 冯宇超的博文
  18. uniapp 动态切换应用图标、名称插件(如新年、国庆等) Ba-ChangeIcon
  19. Android模拟手机拨号器
  20. 去安定医院看失眠,有必要吗?

热门文章

  1. php 聚类算法,科学网—matlab-聚类算法笔记 - 孙月芳的博文
  2. 7.1 pdo 宝塔面板php_CentOS 7.6下宝塔面板 PHP7.2安装sqlsrv扩展
  3. 【项目源码分享】基于C++实现的网店购物管理系统(VS2019控制台)
  4. 单元测试之带你搞懂Mockito使用
  5. 极客精神|自制机械臂!被任正非表扬的华为天才少年
  6. 这篇 CPU Cache,估计要消化一下
  7. OS--进程间通信详解(二)
  8. 【线上分享】探讨TensorRT加速AI模型的简易方案:以图像超分为例
  9. 一款 APK 是怎么诞生的?
  10. 阿里云全球首次互联网8K直播背后的技术解读