【問題描述】
成都創(chuàng)新互聯(lián)公司主營嵊泗網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶App定制開發(fā),嵊泗h5小程序開發(fā)搭建,嵊泗網(wǎng)站營銷推廣歡迎嵊泗等地區(qū)企業(yè)咨詢下面的圖形是著名的楊輝三角形:
如果我們按從上到下、從左到右的順序把所有數(shù)排成一列,可以得到如下數(shù)列:
1,1,1,1,2,1,1,3,3,1,1,4,6,4,1,...
給定一個正整數(shù)N,請你輸出數(shù)列中第一次出現(xiàn)Ⅳ是在第幾個數(shù)?
【輸入格式】
輸入一個整數(shù)N。
【輸出格式】
輸出一個整數(shù)代表答案。
【樣例輸入】
? 6
【樣例輸出】
? 13
【思路與分析】
? 首先,要新建一個數(shù)組以存放楊輝三角中的值。該長度通過題目中所給出的圖示進行計算,此時有一個小竅門。通過觀察可知楊輝三角左右半邊的值為相同的,或者說楊輝三角是中心對稱的。因此,可以先從中間一分為二,選取左半邊或右半邊進行計算。
? 經(jīng)過觀察,不難總結(jié)出規(guī)律:y?= x * (x-1) / 2
后續(xù)計算同樣基于該規(guī)律所做。
【代碼】
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long N= sc.nextLong();
//經(jīng)過計算在第44721行的時候,第三列的值將會超過十億
//所以我們創(chuàng)建44725長度的數(shù)組
long[] a=new long[44725];
a[0]=1L; //將數(shù)組0位置存入一個長整形
if(N==1) { //當N==1,直接輸出1
System.out.println(1);
return;
}
//聲明一個標志位
int count=1;
for(int i=1;i<44725;i++) {
for(int j=i;j>=1;j--) {
//按照楊輝三角的數(shù)字規(guī)律填充數(shù)組
a[j]=a[j]+a[j-1];
//找到了N,則輸出當前位置,位置 的計算等于 前面的個數(shù) + 當行的位置數(shù)
if(a[j]==N) {
//前面的個數(shù) = (count+1)*count/2 ,當行的個數(shù) = i-j+1
System.out.println((count+1)*count/2+i-j+1);
return;
}
}
//判斷完后,標志位++
count++;
}
//這是未找到的情況,就是說有些小于10億的數(shù)在44721行之前都還沒有出現(xiàn) ,
//那么它必然是出現(xiàn)在未顯示出來的第二列的位置上
System.out.println((N+1)*N/2+2);
//所以 位置 = 前面出現(xiàn)的個數(shù) + 2
}
}
【Q&A】
? 為什么在for循環(huán)中不使用 break 而使用return?
? 答:return在for循環(huán)中的作用為:返回return所返回的值,并不會執(zhí)行下一次循環(huán)。因不能干擾count標志位的運算,因此 使用return代替break。若使用break,在OJ測試時將只有60分,無法拿到滿分。
? 為什么在存入數(shù)組元素時使用 1L 而不是 1?
? 答:L表示long ,long占用8個字節(jié),表示范圍:-9223372036854775808 ~ 9223372036854775807?
1L其實就是1。
后面跟L一般是指數(shù)據(jù)類型,1L表示1是長整型,如果是1f 表示是float型,若是1 則表示 int 型。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站題目:【藍橋杯】歷屆真題楊輝三角形(省賽)Java-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://vcdvsql.cn/article38/hodsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站排名、定制開發(fā)、品牌網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容