第6回ブルーブリッジカップ省試合Java言語C組_大きいXを印刷

2647 ワード

印刷の大きいX小明は星でつなぎ合わせて、大きなXを印刷することを望んで、彼は筆画の幅と字全体の高さを制御することができることを要求します.スペースの比較を容易にするために、すべての空白の位置は句点で置き換えられます.ペンの幅、Xの高さを表す整数m nを2つ入力する必要があります.スペースで区切る【図1.jpg】)さらに、例えば、ユーザ入力:4 21プログラムは、****を出力すべきである…….****.****.****...****........................................................................................................................................................................******......... ........********........ .......****..****....... ......****....****...... .....****......****..... ....****........****.... ...****..........****... ..****............****.. .****..............****. ****................**** (位置合わせの問題がある場合は、【図2.jpg】参照)リソース約定:ピークメモリ消費(仮想マシンを含む)<256 M CPU消費<1000 ms要求通りに出力してください.ヘビを描かずに印刷してください.と入力します.すべてのコードを同じソースファイルに配置し、デバッグに合格した後、コピーしてソースコードをコミットします.注意:package文は使用しないでください.jdk 1は使用しないでください.7以降の機能.注意:メインクラスの名前は:Mainでなければなりません.そうしないと、無効なコードで処理されます.
ソースコードは次のとおりです.

import java.util.Scanner;
/**   
 *         、        ,             ,    ,  
 *      。
 * 
 */
public class    X {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		while (input.hasNext()) {
			int count = 0;
			int m = input.nextInt();
			int n = input.nextInt();
			//                 
			count = m % 2 == 0 ? (n - m - 1) / 2 : (n - m) / 2;
			String str[] = new String[count + (m / 2) + 1];
			for (int i = 0; i < count; i++) {

				str[i] = "";

				for (int j = 0; j < i; j++) {
					str[i] += ".";
				}

				for (int j = 0; j < m; j++) {
					str[i] += "*";
				}
				//  
				if (m % 2 == 0) {
					for (int j = 0; j < (count - 1 - i) * 2 + 2; j++) {
						str[i] += ".";
					}
				} else {
					for (int j = 0; j < (count - 1 - i) * 2 + 1; j++) {
						str[i] += ".";
					}
				}
				for (int j = 0; j < m; j++) {
					str[i] += "*";
				}
				for (int j = 0; j < i; j++) {
					str[i] += ".";
				}
			}

			//    
			
			int res = (count + (m / 2)) * 2 + m;//       
			int index = count;
			
			for (int i = 0; i < (m / 2) + 1; i++) {
				str[index]="";
				// count          
				for (int j = 0; j < count + i; j++) {
					str[index] += ".";
				}
				for (int j = 0; j < res - (count + i) * 2; j++) {
					str[index] += "*";
				}
				for (int j = 0; j < count + i; j++) {
					str[index] += ".";
				}
				index++;
			}
			for (int j = 0; j < str.length; j++) {
				System.out.println(str[j]);
			}
			for (int j = str.length - 2; j >= 0; j--) {
				System.out.println(str[j]);
			}
		}

	}
}