第六次測試 A B C
A.
有一隻經過訓練的蜜蜂只能爬向右側相鄰的蜂房,不能反向爬行。請程式設計計算蜜蜂從蜂房a爬到蜂房b的可能路線數。
其中,蜂房的結構如下所示。
Input
輸入資料的第一行是一個整數N,表示測試例項的個數,然後是N 行資料,每行包含兩個整數a和b(0<a<b<50)。
Output
對於每個測試例項,請輸出蜜蜂從蜂房a爬到蜂房b的可能路線數,每個例項的輸出佔一行。
Sample Input
2
1 2
3 6
Sample Output
1
3
第一題一眼看上去有點蒙圈,但是多排列幾個數值後你會發現它非常眼熟,(那啥那啥波數列)
於是熟練的敲程式碼,ctrlA ctrlC ctrlV,嗯,等著轉圈,wa。、
WTF???
秉持著ak爺的大力出奇跡,改了改無關緊要的地方繼續提交,emmmmmmm,WA。
哪錯了?還是老毛病,爆int了
#include<stdio.h>
int main ()
{
long long s[100];
int a,b;
int n;
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&a,&b);
int t=b-a;
s[1]=1;
s[2]=2;
for(int i=3;i<=t;i++)
{
s[i]=s[i-1]+s[i-2];
}
printf("%lld\n",s[t]);
}
return 0;
}
把盛放計算結果的陣列改成long long就可以了,於是你發現C題是多麼簡單。
C.
在2×n的一個長方形方格中,用一個1× 2的骨牌鋪滿方格,輸入n ,輸出鋪放方案的總數.
例如n=3時,為2× 3方格,骨牌的鋪放方案有三種,如下圖:
Input
輸入資料由多行組成,每行包含一個整數n,表示該測試例項的長方形方格的規格是2×n (0<n<=50)。
Output
對於每個測試例項,請輸出鋪放方案的總數,每個例項的輸出佔一行。
Sample Input
1
3
2
Sample Output
1
3
2
直接貼程式碼
#include<stdio.h> int main () { int n; long long a[100]; while(~scanf("%d",&n)) { a[1]=1; a[2]=2; for(int i=3;i<=n;i++) { a[i]=a[i-1]+a[i-2]; } printf("%lld\n",a[n]); } return 0; }
水題說完了接下來就要瘋狂吐槽了
B.
人稱“AC女之殺手”的超級偶像LELE最近忽然玩起了深沉,這可急壞了眾多“Cole”(LELE的粉絲,即"可樂"),經過多方打探,某資深Cole終於知道了原因,原來,LELE最近研究起了著名的RPG難題:
有排成一行的n個方格,用紅(Red)、粉(Pink)、綠(Green)三色塗每個格子,每格塗一色,要求任何相鄰的方格不能同色,且首尾兩格也不同色.求全部的滿足要求的塗法.
以上就是著名的RPG難題.
如果你是Cole,我想你一定會想盡辦法幫助LELE解決這個問題的;如果不是,看在眾多漂亮的痛不欲生的Cole女的面子上,你也不會袖手旁觀吧?
Input
輸入資料包含多個測試例項,每個測試例項佔一行,由一個整數N組成,(0<n<=50)。
Output
對於每個測試例項,請輸出全部的滿足要求的塗法,每個例項的輸出佔一行。
Sample Input
1
2
Sample Output
3
6
這道題還真是槽點滿滿啊,題目描述什麼的就不說了,浪費我打草紙真的不可饒恕,怎麼說也好幾毛錢,,,,,
在思考不出頭緒後開始瘋狂計數,拿到五個數字之後腦袋都大了,規律呢???
先隨便試一個,然後提交n次,全紅,WA哭了,大力出奇跡已經不好用了,開始研究到底有什麼規律,然後靈光一閃。
#include<stdio.h>
int main ()
{
int n;
long long a[100];
while(~scanf("%d",&n))
{
a[1]=3;
a[2]=6;
a[3]=6;
for(int i=4;i<=n;i++)
{
a[i]=a[i-2]*2+a[i-1];
}
printf("%lld\n",a[n]);
}
return 0;
}
看程式碼很容易明白這道題怎麼做,解釋一下。
第N年的方法數是N-1年的加上2*N-1年的總數,原理高中就學過。
如果n-1格顏色和第一格顏色不相等,那麼N格上只有一種顏色能選,所以方法數是n-1年的,
如果n-1格顏色和第一格顏色相等,那麼N上我們有兩種顏色可以選,在這裡我們計算的是2*(n-2),為什麼是n-2?拿N=4來舉例子,n-1=3, 1和3上顏色相等,在n-1上是不存在的,實際上是n-2時的情況,所以計算的是2*(n-2)。
最後把兩種情況相加輸出就可以,注意盛放結果的依舊是long long。