Go語言小白入門刷題打印輸出沙漏
題解
【PTA團(tuán)體程序設(shè)計(jì)天梯賽】 L1-002 打印沙漏 (20 分) Go語言|Golang
本題要求你寫個(gè)程序把給定的符號(hào)打印成沙漏的形狀。例如給定17個(gè)“*”,要求按下列格式打印
*****
***
*
***
*****
所謂“沙漏形狀”,是指每行輸出奇數(shù)個(gè)符號(hào);各行符號(hào)中心對(duì)齊;相鄰兩行符號(hào)數(shù)差2;符號(hào)數(shù)先從大到小順序遞減到1,再從小到大順序遞增;首尾符號(hào)數(shù)相等。
給定任意N個(gè)符號(hào),不一定能正好組成一個(gè)沙漏。要求打印出的沙漏能用掉盡可能多的符號(hào)。
輸入格式:
輸入在一行給出1個(gè)正整數(shù)N(≤1000)和一個(gè)符號(hào),中間以空格分隔。
輸出格式:
首先打印出由給定符號(hào)組成的最大的沙漏形狀,最后在一行中輸出剩下沒用掉的符號(hào)數(shù)。
輸入樣例:
19 *
結(jié)尾無空行
輸出樣例:
*****
***
*
***
*****
2
結(jié)尾無空行
思路
基礎(chǔ)的輸出,如果覺得這題不友好的可以跳過,等回頭再來做做,領(lǐng)悟一下。
就是找規(guī)律,先計(jì)算出所需要的有多少。再減去然后得到剩余的數(shù)量。然后再按照規(guī)律打印這個(gè)沙漏,其實(shí)就是一個(gè)等差數(shù)列了啦~
代碼如下
package main
import (
"fmt"
)
func main() {
var n int
var tag byte
var sum, nextSum int
_, _ = fmt.Scanf("%d %c", &n, &tag)
sum = 1
nextSum = 1
i := 1
last := 0
for true { // 先是計(jì)算出所需要多少的符號(hào)
i += 2
nextSum += i * 2
if nextSum <= n {
sum += i * 2
} else {
i -= 2
last = n - sum
break
}
}
for j:=i; j>=1; j=j-2 { // 先打印上半部分
var space = (i - j) / 2
for k:=0; k<i-space; k++ {
if k < space {
fmt.Printf(" ") // 先打印空格
} else {
fmt.Printf("%c", tag) //再打印*
}
}
fmt.Println() // 最后記得要換行
}
for j:=3; j<=i; j=j+2 {
var space = (i - j) / 2 //再打印下半部分
for k:=0; k<i-space; k++ {
if k < space{
fmt.Printf(" ") //再打印*
} else {
fmt.Printf("%c", tag)
}
}
fmt.Println()
}
fmt.Println(last)
}
以上就是Go語言小白入門刷題打印輸出沙漏的詳細(xì)內(nèi)容,更多關(guān)于Go語言打印沙漏的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
golang如何設(shè)置Header Content-type
這篇文章主要介紹了golang如何設(shè)置Header Content-type問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
go語言題解LeetCode506相對(duì)名次示例詳解
這篇文章主要為大家介紹了go語言題解LeetCode506相對(duì)名次示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
Go語言實(shí)現(xiàn)超時(shí)的三種方法實(shí)例
超時(shí)在一些業(yè)務(wù)場(chǎng)景里非常普遍,下面這篇文章主要給大家介紹了關(guān)于Go語言實(shí)現(xiàn)超時(shí)的三種方法,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Go語言具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-07-07
一文帶你了解Golang中類型轉(zhuǎn)換庫cast的使用
你是否在使用 Go 的過程中因?yàn)轭愋娃D(zhuǎn)換的繁瑣而苦惱過?你是否覺得 Go 語言中的類型斷言可能會(huì) panic 而對(duì)自己寫的代碼有那么一點(diǎn)點(diǎn)不放心?本文就為大家推薦一個(gè)用于類型轉(zhuǎn)換的第三方庫 cast 絕對(duì)是一個(gè)值得嘗試的選擇2023-02-02
go語言實(shí)現(xiàn)簡(jiǎn)單的并發(fā)網(wǎng)頁爬蟲示例
在這個(gè)章節(jié)中,我們將會(huì)結(jié)合之前的知識(shí)點(diǎn),實(shí)現(xiàn)一個(gè)簡(jiǎn)易的并發(fā)網(wǎng)頁爬蟲,我們的爬蟲會(huì)先爬取一個(gè)起始頁面,提取出所有的鏈接,然后并發(fā)地爬取這些鏈接,有需要的朋友可以借鑒參考下,希望能夠有所幫助2023-08-08
Golang?單元測(cè)試和基準(zhǔn)測(cè)試實(shí)例詳解
這篇文章主要為大家介紹了Golang?單元測(cè)試和基準(zhǔn)測(cè)試實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08

