noip2008普及組題解
從我在其他站的部落格直接搬過來的
posted @ 2016-04-16 01:11
t1 isbn號碼
每一本正式出版的圖書都有乙個isbn號碼與之對應,isbn碼包括9位數字、1位識別碼和3位分隔符, 其規定格式如「x-***-***xx-x」,其中符號「-」就是分隔符(鍵盤上的減號),最後一位是識別碼,例如0-670-82162-4就是乙個標 準的isbn碼。isbn碼的首位數字表示書籍的出版語言,例如0代表英語;第乙個分隔符「-」之後的三位數字代表出版社,例如670代表維京出版社;第 二個分隔符後的五位數字代表該書在該出版社的編號;最後一位為識別碼。
識別碼的計算方法如下:
首位數字乘以1加上次位數字乘以2……以此類推,用所得的結果mod 11,所得的餘數即為識別碼,如果餘數為10,則識別碼為大寫字母x。例如isbn號碼0-670-82162-4中的識別碼4是這樣得到的:對 067082162這9個數字,從左至右,分別乘以1,2,...,9,再求和,即0×1+6×2+……+2×9=158,然後取158 mod 11的結果4作為識別碼。
你的任務是編寫程式判斷輸入的isbn號碼中識別碼是否正確,如果正確,則僅輸出「right」;如果錯誤,則輸出你認為是正確的isbn號碼。
輸入格式:
輸入檔案isbn.in只有一行,是乙個字串行,表示一本書的isbn號碼(保證輸入符合isbn號碼的格式要求)。
輸出格式:
輸出檔案isbn.out共一行,假如輸入的isbn號碼的識別碼正確,那麼輸出「right」,否則,按照規定的格式,輸出正確的isbn號碼(包括分隔符「-」)。
輸入樣例#1:
【輸入樣例1】輸出樣例#1:0-670-82162-4
【輸入樣例2】
0-670-82162-0
【輸出樣例1】2008普及組第一題right
【輸出樣例2】
0-670-82162-4
#include#includeusing namespace std;
int main();
struct td x[1200],y[2100];
int cmp(td a,td b)
int rex[1200],rey[2100];
int m,n,k,l,d;
int main()
if(x1!=x2)
}sort(x+1,x+m+1,cmp);
sort(y+1,y+n+1,cmp);
for(i=1;i<=k && i<=m;i++)
for(i=1;i<=l && i<=n;i++)
sort(rex+1,rex+k+1);
sort(rey+1,rey+l+1);
for(i=1;i<=k;i++)printf("%d ",rex[i]);
cout兩次排序,一次排能隔開的數量,一次排id
看發帖時間就知道我為何不想多解釋
t3上體育課的時候,小蠻的老師經常帶著同學們一起做遊戲。這次,老師帶著同學們一起做傳球遊戲。
遊戲規則是這樣的:n個同學站成乙個圓圈,其中的乙個同學手裡拿著乙個球,當老師吹哨子時開始傳球,每個同學可以把球傳給自己左右的兩個同學中的乙個(左右任意),當老師在此吹哨子時,傳球停止,此時,拿著球沒有傳出去的那個同學就是敗者,要給大家表演乙個節目。
聰明的小蠻提出乙個有趣的問題:有多少種不同的傳球方法可以使得從小蠻手裡開始傳的球,傳了m次以後,又回到小蠻手裡。兩種傳球方法被視作不同的方 法,當且僅當這兩種方法中,接到球的同學按接球順序組成的序列是不同的。比如有三個同學1號、2號、3號,並假設小蠻為1號,球傳了3次回到小蠻手裡的方 式有1->2->3->1和1->3->2->1,共2種。
輸入格式:
輸入檔案ball.in共一行,有兩個用空格隔開的整數n,m(3<=n<=30,1<=m<=30)。
輸出格式:
輸出檔案ball.out共一行,有乙個整數,表示符合題意的方法數。
輸入樣例#1:
3 3
輸出樣例#1:
240%的資料滿足:3<=n<=30,1<=m<=20
100%的資料滿足:3<=n<=30,1<=m<=30
2008普及組第三題
#include#include#include#includeusing namespace std;動規,f[次數][人員]int n;
int f[200][200];//[第i次][第j個人]
int t;
int main()
printf("%d",f[t][1]);
return 0;
}
每次可以從左邊的人或右邊的人手裡接到球,所以方案數是左右相加
注意鏈變環
t4 立體圖
小淵是個聰明的孩子,他經常會給周圍的小朋友們將寫自己認為有趣的內容。最近,他準備給小朋友們講解立體圖,請你幫他畫出立體圖。
小淵有一塊面積為m*n的矩形區域,上面有m*n個邊長為1的格仔,每個格仔上堆了一些同樣大小的積木(積木的長寬高都是1),小淵想請你列印出這些格仔的立體圖。我們定義每個積木為如下格式,並且不會做任何翻轉旋轉,只會嚴格以這一種形式擺放:
每個頂點用1個加號』+』表示,長用3個」-」表示,寬用1個」/」,高用兩個」|」表示。字元』+』,」-」,」/」,」|」的ascii碼分別 為43,45,47,124。字元』.』(ascii碼46)需要作為背景輸出,即立體圖裡的空白部分需要用』.』來代替。立體圖的畫法如下面的規則:
若兩塊積木左右相鄰,圖示為:
若兩塊積木上下相鄰,圖示為:
若兩塊積木前後相鄰,圖示為:
立體圖中,定義位於第(m,1)的格仔(即第m行第1列的格仔)上面自底向上的第一塊積木(即最下面的一塊積木)的左下角頂點為整張圖最左下角的點。
輸入格式:
輸入檔案drawing.in第一行有用空格隔開的2個整數m和n,表示有m*n個格仔(1<=m,n<=50)。
接下來的m行,是乙個m*n的矩陣,每行有n個用空格隔開的整數,其中第i行第j列上的整數表示第i行第j列的個子上摞有多少個積木(1<=每個格仔上的積木數<=100)。
輸出格式:
輸出檔案drawing.out中包含題目要求的立體圖,是乙個k行l列的字串矩陣,其中k和l表示最少需要k行l列才能按規定輸出立體圖。
輸入樣例#1:
3 4輸出樣例#1:2 2 1 2
2 2 1 1
3 2 1 2
......+---+---+...+---+noip2008普及組第四題..+---+ / /|../ /|
./ /|-+---+ |.+---+ |
+---+ |/ /| +-| | +
| | +---+ |/+---+ |/|
| |/ /| +/ /|-+ |
+---+---+ |/+---+ |/| +
| | | +-| | + |/.
| | |/ | |-| +..
+---+---+---+---+ |/...
| | | | | +....
| | | | |/.....
+---+---+---+---+......
本質上還是模擬,但是算座標讓題目複雜度上了一級
不習慣夜戰的我算錯了好幾次……
/*silvern 2008普及組t4立體圖*/
#include#include#include#include#includeusing namespace std;
char c[7][8]=;
char map[2000][2000];
int d[2000][2000];
int k,l;
void draw(int x,int y)
return;
}int main()
l=4*n+2*m+1;//4*n是由於矩陣寬而多需要的寬度,2*m+1是因為積木前後層數而需要的高度
for(i=1;i<=k;i++)
for(j=1;j<=l;j++)
map[i][j]='.';//先鋪好點
for(i=1;i<=m;i++)//從後往前
for(j=1;j<=n;j++)//從左往右
for(int g=0;g解釋都在注釋裡了
那個用char組表示立體圖的方法是和別的大神學的
很帥對吧
NOIP2008普及組 排座椅
問題描述 上課的時候總有一些同學和前後左右的人交頭接耳,這是令小學班主任十分頭疼的一件事情。不過,班主任小雪發現了一些有趣的現象,當同學們的座次確定下來之後,只有有限的d對同學上課時會交頭接耳。同學們在教室中坐成了m行n列,坐在第i行第j列的同學的位置是 i,j 為了方便同學們進出,在教室中設定了k...
NOIP2008 普及組 ISBN 號碼
題目鏈結 題目描述 每一本正式出版的圖書都有乙個isbn號碼與之對應,isbn碼包括9位數字 1位識別碼和3位分隔符,其規定格式如x xx x,其中符號 就是分隔符 鍵盤上的減號 最後一位是識別碼,例如0 670 82162 4就是乙個標準的isbn碼。isbn碼的首位數字表示書籍的出版語言,例如0...
NOIP2008提高組題解
考察知識 字串,素數判定 演算法難度 x 實現難度 x 分析 直接輸入後安裝要求計算就可以了。includebool isprime int n 考察知識 列舉 演算法難度 xx 實現難度 xx 分析 我們先預處理數字在1.999 因為四位數最少火柴1111,有8根,3個數字就會超過24根 的所有整...