1027 打印沙漏 (20分)


思路:

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("
");
        }
        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("
");
        }
        System.out.print(str);
        System.out.println(num-num0);

    }
}




不一样的烟火
原文地址:https://www.cnblogs.com/cstdio1/p/12130095.html