咕咕東是個貪玩的孩子,有一天,他從上古遺跡中得到了乙個神奇的圓環。這個圓環由字母表組成首尾相接的環,環上有乙個指標,最初指向字母a。咕咕東每次可以順時針或者逆時針旋轉一格。例如,a順時針旋轉到z,逆時針旋轉到b。咕咕東手裡有乙個字串,但是他太笨了,所以他來請求你的幫助,問最少需要轉多少次。
輸入格式輸入只有一行,是乙個字串。
輸出格式輸出最少要轉的次數。
樣例輸入
zeus
樣例輸出
18
minlen為計算兩個字母a、b的距離。對於除a=b、(a+13)%26=b之外的其他情況,讓b成為ascll碼較大的那個字母,若b-a為正,則返回b-a,否則返回26-(b-a)。
#include
#include
#include
using
namespace std;
intminlen
(char a,
char b)
//從a到b最短路徑
if(b>a)
}int
main()
咕咕東考試周開始了,考試周一共有n天。他不想考試周這麼累,於是打算每天都吃頓好的。他決定每天都吃生煎,咕咕東每天需要買ai個生煎。
但是生煎店為了刺激消費,只有兩種購買方式:
①在某一天一次性買兩個生煎。
②今天買乙個生煎,同時為明天買乙個生煎,店家會給乙個券,第二天用券來拿。
沒有其餘的購買方式,這兩種購買方式可以用無數次,但是咕咕東是個節儉的好孩子,他訓練結束就走了,不允許訓練結束時手裡有券。咕咕東非常有錢,你不需要擔心咕咕東沒錢,但是咕咕東太笨了,他想問你他能否在考試周每天都能恰好買ai個生煎。
輸入格式
輸入兩行,第一行輸入乙個正整數n(1<=n<=100000),表示考試周的天數。
第二行有n個數,第i個數ai(0<=ai<=10000)表示第i天咕咕東要買的生煎的數量。
輸出格式
如果可以滿足咕咕東奇怪的要求,輸出"yes",如果不能滿足,輸出「no」。(輸出不帶引號)
樣例
樣例輸入141
212樣例輸出1
yes樣例輸入231
01樣例輸出2
no
第一種購買方式是一次買偶數個生煎,第二種是第一天買奇數個生煎,同時第二天要買的生煎數減一。也就是若有一天的生煎數為奇數,則必須要選擇第二種購買方式。
如此按天數迴圈,若該天需要買的生煎是偶數,可以選擇第一種購買方式全部買完,直接進入第二天。若為奇數,則選擇第二種方式購買乙個生煎,剩下的偶數個生煎用第一種方式購買,同時第二天要買的生煎數減一。迴圈到最後一天,若生煎數為偶數,則成功,否則失敗(因為選擇第二種方式購買後手中有券存留)。
注意,該資料點每天的生煎數最大範圍為10w,故採用while而非用陣列存放每天的生煎數。
#include
#include
#include
using
namespace std;
intmain()
else
if(x%2==
1&&n==0)
if(x%2==
0)t=0;
else
if(x%2==
1)t=1;
}return0;
}
眾所周知,瑞神已經達到了cs本科生的天花板,但殊不知天外有天,人外有苟。在浩瀚的宇宙中,存在著-種叫做苟狗的生物, 這種生物天生就能達到人類研究生的知識水平,並且天生擅長csp,甚至有全國第一的水平!但最可怕的是,它可以發出宇宙射線!宇宙射線可以摧毀人的智商,進行降智打擊!
宇宙射線會在無限的二維平面上傳播(可以看做乙個二維網格圖),初始方向預設向上。宇宙射線會在發射出一段距離後**,向該方向的左右45°方向**出兩條宇宙射線,同時威力不變!宇宙射線會**n次,每次**後會在**方向前進a個單位長度。
現在瑞神要帶著他的小弟們挑戰苟狗,但是瑞神不想讓自己的智商降到普通本科生zjm那麼菜的水平,所以瑞神來請求你幫他計算出共有多少個位置會被"降智打擊」。
樣例輸入
442
32
樣例輸出
39
以第一次**的第乙個點表示為二維座標(0,1),結構體儲存每個格的座標。每次**都有兩個方向,故可用遞迴實現。**後的走向有八種,可用0~7表示,並用set儲存走過的方格,因為set可以自動去重複,所以可以不用考慮射線走到同乙個格的情況,但是要過載《函式。遞迴時,將射線走過的方格放進set,並按照射線的方向分類討論**後的方向。直到**次數到達n就返回。但是這樣寫完只能40分,剩下的資料點會超時。
又注意到在第六七次的**後,會有大量的在同一**層次、同一方向並處於同一點的情況,這時就不必再遞迴,因為後續**情形已發生過。這樣就不會超時了,可ac。
#include
#include
#include
using
namespace std;
struct coordinate};
int splitlen[40]
;//每次**後還要前進的長度
int count=0;
//答案
int n;
//共**幾次
set thiss;
bool bett[10]
[50][
500]
[500]=
;void
s(coordinate thisco,
int dir,
int num)
num++;s
(thisco,
1,num);s
(thisco,
7,num);}
if(dir==1)
num++;s
(thisco,
0,num);s
(thisco,
2,num);}
if(dir==2)
num++;s
(thisco,
1,num);s
(thisco,
3,num);}
if(dir==3)
num++;s
(thisco,
2,num);s
(thisco,
4,num);}
if(dir==4)
num++;s
(thisco,
3,num);s
(thisco,
5,num);}
if(dir==5)
num++;s
(thisco,
4,num);s
(thisco,
6,num);}
if(dir==6)
num++;s
(thisco,
5,num);s
(thisco,
7,num);}
if(dir==7)
num++;s
(thisco,
6,num);s
(thisco,
0,num);}
}int
main()
程式設計思維與實踐 CSP M1 補題
a 咕咕東的奇遇 題意咕咕東是個貪玩的孩子,有一天,他從上古遺跡中得到了乙個神奇的圓環。這個圓環由字母表組成首尾相接的環,環上有乙個指標,最初指向字母a。咕咕東每次可以順時針或者逆時針旋轉一格。例如,a順時針旋轉到z,逆時針旋轉到b。咕咕東手裡有乙個字串,但是他太笨了,所以他來請求你的幫助,問最少需...
程式設計思維與實踐 CSP M1補題
題目描述 咕咕東是個貪玩的孩子,有一天,他從上古遺跡中得到了乙個神奇的圓環。這個圓環由字母表組成首尾相接的環,環上有乙個指標,最初指向字母a。咕咕東每次可以順時針或者逆時針旋轉一格。例如,a順時針旋轉到z,逆時針旋轉到b。咕咕東手裡有乙個字串,但是他太笨了,所以他來請求你的幫助,問最少需要轉多少次。...
程式設計思維與實踐 CSP M1補題
思路 這一題沒有太多難度,就是模擬實際的轉盤,運用好模運算,注意好細節即可。include char input 20000 char table 27 int main int word 0 int needle 0 int count 0 while input word 0 else word...