L1-002. 打印沙漏
2016-05-19 12:59
295 查看
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:
输出样例:
***** *** * *** *****
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:
19 *
输出样例:
***** *** * *** *****2
import java.util.Scanner; public class Main { public static void main(String[]args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); String s = sc.next(); int count = 0; int sum = 1; for(int i= 3; sum<n ;i+=2){ // 算出需要打出的行数的一半 除了打印一个的行数 sum+=2*i; count++; if(sum==n){ break; } if(sum>n){ count--; sum -= 2*i; break; } } for(int i=1 ;i<=count ;i++){ for(int j=1;j<i;j++){ System.out.print(" "); } for(int x = 0 ;x<=2*(count+1-i);x++){ System.out.print(s); } System.out.println(); } for(int i=1;i<=count;i++){ System.out.print(" "); } System.out.println(s); for(int i=1 ;i<=count ;i++){ for(int j=1;j<=count-i;j++){ System.out.print(" "); } for(int x = 1 ;x<=2*i+1;x++){ System.out.print(s); } System.out.println(); } int result =n-sum; System.out.println(result); } }
相关文章推荐
- linux下的文件查找命令总结:find、locate、whereis、which
- xhost: unable to open display linux下安装oracle
- JAVA设计模式(15):行为型-命令模式(Command)
- Aurora — 一个在 MSOffice 内输入 LaTeX 公式的很好用插件
- get和post的区别
- snort: error while loading shared libraries
- maven目录结构解析
- 常用正则表达式
- css 宽高等比
- Ubuntu 16.04 配置ipv6源
- iOS代码调试(一)
- Android开发笔记(一百零二)统计图表
- apache-tomcat非安装版配置
- JQ中将事件绑定在动态添加的标签上(live/on/bind/delegate)
- 重磅!谷歌将与搜狗合作进入中国
- java calender 获取本周一与周日的代码
- Office word中mathtype公式与LaTex公式代码互转
- 刘强东12句话浇醒创业者
- Error: duplicate files during packaging of APK D:\eclipse\workspace\YC_SafeHelpe r_Community\build\o
- ocp—051试题答案解析