首页 > 其他 > 详细

1027 打印沙漏 (20分)

时间:2020-01-01 22:36:14      阅读:151      评论:0      收藏:0      [点我收藏+]

技术分享图片
技术分享图片

思路:

技术分享图片

java代码如下:


//打印沙漏
//an=2n-1;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int num=sc.nextInt();
        String outputStr=sc.next();
        StringBuilder temp=new StringBuilder("");
        for(int i=0;i<500;i++){
            temp.append(outputStr);
        }
        for(int i=500;i<1000;i++){
            temp.append(" ");
        }
        //确定用到的*号个数
        int num0=num;
        boolean flag = false;
        while(true){
            for(int i=0;i<=Math.sqrt((num0+1)/2);i++){
                if(2*i*i-1==num0){
                    flag=true;
                    break;
                }
            }
            if(flag) break;
            num0--;
        }
       // System.out.println("num0: "+num0);
        int n=(int)Math.sqrt((num0+1)/2);

        StringBuilder str=new StringBuilder("");
        for(int i=n;i>=1;i--){
            str.append(temp.substring(500,500+n-i));
            str.append(temp.substring(0,2*i-1));
            str.append("\n");
        }
        for(int i=2;i<=n;i++){
            str.append(temp.substring(500,500+n-i));
            str.append(temp.substring(0,2*i-1));
            str.append("\n");
        }
        System.out.print(str);
        System.out.println(num-num0);

    }
}



1027 打印沙漏 (20分)

原文:https://www.cnblogs.com/cstdio1/p/12130095.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!