成人免费看黄网站无遮挡,caowo999,se94se欧美综合色,a级精品九九九大片免费看,欧美首页,波多野结衣一二三级,日韩亚洲欧美综合

isbn信息學(xué)聯(lián)賽試題

時(shí)間:2022-09-24 10:33:00 試題 我要投稿
  • 相關(guān)推薦

isbn信息學(xué)聯(lián)賽試題

  1.ISBN號碼

isbn信息學(xué)聯(lián)賽試題

  (isbn.pas/c/cpp)

  【問(wèn)題描述】

  每一本正式出版的圖書(shū)都有一個(gè)ISBN號碼與之對應,ISBN碼包括9位數字、1位識別碼和3位分隔符,其規定格式如x-xxx-xxxxx-x,其中符號-是分隔符(鍵盤(pán)上的減號),最后一位是識別碼,例如0-670-82162-4就是一個(gè)標準的ISBN碼。ISBN碼的首位數字表示書(shū)籍的出版語(yǔ)言,例如0代表英語(yǔ);第一個(gè)分隔符-之后的三位數字代表出版社,例如670代表維京出版社;第二個(gè)分隔之后的五位數字代表該書(shū)在該出版社的編號;最后一位數字為識別碼。

  識別碼的計算方法如下:

  首位數字乘以1加上次位數字乘以2以此類(lèi)推,用所得的結果mod 11,所得的余數即為識別碼,如果余數為10,則識別碼為大寫(xiě)字母X。例如ISBN號碼0-670-82162-4中的識別碼4是這樣得到的:對067082162這9個(gè)數字,從左到右,分別乘以1,2,,9,再求和,即01+62++29=158,然后取158 mod 11的結果4作為識別碼。

  你的任務(wù)是編寫(xiě)程序判斷輸入的ISBN號碼中識別碼是否正確,如果正確,則僅輸出Right;如果錯誤,則輸出你認為是正確的ISBN號碼。

  【輸入】

  輸入文件isbn.in只有一行,是一個(gè)字符序列,表示一本書(shū)的ISBN號碼(保證輸入符合ISBN號碼的格式要求)。

  【輸出】

  輸出文件isbn.in共一行,假如輸入的ISBN號碼的識別碼正確,那么輸出Right,否則,按照規定的格式,輸出正確的ISBN號碼(包括分隔符-)。

  【輸入輸出樣例1】

  Isbn.inisbn.out

  0-670-82162-4Right

  【輸入輸出樣例2】

  isbn.inisbn.out

  0-670-82162-00-670-82162-4

  【試題分析】

  首先將ISBN串前9個(gè)數字分別轉換成整型數并儲存在數組里,因為這9個(gè)數字從左到右分別乘以1,2,,9的和的最大值小于32767,所以使用整型變量?jì)Υ妗?/p>

  按試題要求計算識別碼,并與ISBN號碼中識別碼做比較,如果正確,輸出Right;如果錯誤,則輸出正確的ISBN號碼。

  【參考程序】

  program isbn;

  var

  i,j:integer;

  s:string;

  a:array[1..9] of integer;

  l:char;

  procedure input;{輸入過(guò)程}

  var

  f:text;

  begin

  assign(f,'isbn.in');

  reset(f);

  read(f,s);{將ISBN碼讀入字符串s中}

  close(f);

  end;

  procedure output;{輸出過(guò)程}

  var

  f:text;

  begin

  assign(f,'isbn.out');

  rewrite(f);

  if s[13]=l then

  write(f,'Right'){如果識別碼正確則輸出Right}

  else

  begin{如果不正確則輸出正確的ISBN碼}

  for i:=1 to 12 do

  write(f,s[i]);

  write(f,l);

  end;

  close(f);

  end;

  procedure main;{主過(guò)程}

  begin

  j:=0;

  for i:=1 to 11 do{將前九個(gè)數轉換成整型并存入a數組}

  if s[i]'-' then

  begin

  inc(j);

  if s[i]='0' then

  a[j]:=0

  else

  a[j]:= ord(s[i])-48;

  end;

  j:=0;

  for i:=1 to 9 do

  j:=a[i]*i+j;

  j:=j mod 11;{計算識別碼}

  if j=10 then

  l:='X'{處理結果為10}

  else

  if j=0 then

  l:='0'

  else

  l:= chr(j+48);

  end;

  begin

  input;

  main;

  output;

  end.

  2.排座椅

  (seat.pas/c/cpp)

  【問(wèn)題描述】

  上課的時(shí)候總有一些同學(xué)和前后左右的人交頭接耳,這是令小學(xué)班主任十分頭疼的一件事情。不過(guò),班主任小雪發(fā)現了一些有趣的現象,當同學(xué)們的座次確定下來(lái)之后,只有有限的D對同學(xué)上課時(shí)會(huì )交頭耳。同學(xué)們在教室中坐成了M行N列,坐在第i行第j列的同學(xué)的位置是(i,j),為了方便同學(xué)們進(jìn)出,在教室中設置了K條橫向的通道,L條縱向的通道。于是,聰明的小雪想到了一個(gè)辦法,或許可以減少上課時(shí)學(xué)生交頭接耳的問(wèn)題:她打算重新擺放桌椅,改變同學(xué)們桌椅間通道的位置,困為如果一條通道隔開(kāi)了兩個(gè)會(huì )交頭接耳的同學(xué),那么他們就不會(huì )交頭接耳了。

  請你幫忙給小雪編寫(xiě)一個(gè)程序,給出最好的通道劃分方案。在該方案下,上課時(shí)交頭接耳的學(xué)生的對數最少。

  【輸入】

  輸入文件seat.in的第一行,有5個(gè)用空格隔開(kāi)的整數,分別是M,N,K,L,D(2﹤=N,M﹤=1000,0﹤=K﹤M,0﹤=L﹤N,D﹤=2000)。

  接下來(lái)D行,每行有4個(gè)用空格隔開(kāi)的整數。第i行的4個(gè)整數Xi,Yi,Pi,Qi,表示坐在位置(Xi,Yi)與(Pi,Qi)的兩個(gè)同學(xué)會(huì )交頭接耳(輸入保證他們前后相鄰或者左右相鄰)。

  輸入數據保證最優(yōu)方案的唯一性。

  【輸出】

  輸出文件seat.out共兩行。

  第一行包含K個(gè)整數,a1 a2 ak,表示第a1行和第a1+1行之間、第a2行和a2+1行之間、、第ak行和第ak+1行之間要開(kāi)展通道,其中ai﹤ ai+1,每?jì)蓚(gè)整數之間用空格隔開(kāi)(行尾沒(méi)有空格)。

  第二行包含L個(gè)整數,b1 b2bl,表示第b1列和b1+1列之間、第b2列和b2+1列之間、、第bl列和第bl +1列之間要開(kāi)辟通道,其中bi﹤bi+1,每?jì)蓚(gè)整數之間用空格隔開(kāi)(行尾沒(méi)有空格)。

  【輸入輸出樣例】

  seat.inseat.out

  4 5 1 2 3

  4 2 4 3

  2 3 3 3

  2 5 2 42

  2 4

  【輸入輸出樣例解釋】

  ┌─┬─╂─┬─╂─┐

  4 │ │* ┃* │ ┃ │

  ├─┼─╂─┼─╂─┤

  3 │ │ ┃※│ ┃ │

  ━┿━┿━╋━┿━╋━┿

  2 │ │ ┃※│+ ┃+ │

  ├─┼─╂─┼─╂─┤

  1 │ │ ┃ │ ┃ │

  └─┴─╂─┴─╂─┘

  1 2 ┃3 4 ┃5

  【試題分析】

  先將每對交頭接耳的同學(xué)位置(Xi,Yi)與(Pi,Qi)分別讀入X、Y、P、Q四個(gè)一維數組中,再找出需設通道(隔開(kāi)交頭接耳的學(xué)生)的位置,橫向通道存入a數組,豎向通道存入b數組,數組的角標表示通道位置,數組內儲存能隔開(kāi)交頭接耳學(xué)生的對數。

  從a、b數組中找出能隔開(kāi)交頭接耳的學(xué)生對數最多的通道,分別存入aa、bb數組,排序后輸出。

  【參考程序】

  program seat;

  type

  arr=array[1..999] of integer;

  var

  m,n,k,l,d,i:integer;

  x,y,p,q:array[1..2000] of integer;

  a,b,aa,bb:arr;

  procedure input; {輸入過(guò)程}

  var

  f:text;

  begin

  assign(f,'seat.in');

  reset(f);

  readln(f,m,n,k,l,d);

  for i:=1 to d do

  readln(f,x[i],y[i],p[i],q[i]);{讀入會(huì )交頭接耳學(xué)生的位置}

  close(f);

  end;

  procedure output;{輸出過(guò)程}

  var

  f:text;

  begin

  assign(f,'seat.out');

  rewrite(f);

  for i:=1 to k do

  begin

  write(f,aa[i]);

  if ik then write(f,' ');{防止行尾有空格}

  end;

  writeln(f);

  for i:=1 to l do

  begin

  write(f,bb[i]);

  if il then write(f,' ');

  end;

  close(f);

  end;

  procedure td(a:arr;k,m:integer;var aa:arr);{ 通道劃分過(guò)程}

  var

  j,u,i,t:integer;

  begin

  j:=0;

  while jk do{找出能隔開(kāi)交頭接耳的學(xué)生對數最多的通道}

  begin

  u:=-1;

  for i:=1 to m-1 do

  if a[i]u then

  begin

  u:=a[i];

  t:=i;

  end;

  a[t]:=-1;

  inc(j);

  aa[j]:=t;

  end;

  for i:=1 to k-1 do{排序}

  begin

  u:=i;

  for j:=i+1 to k do

  if aa[j]aa[u] then u:=j;

  t:=aa[i];aa[i]:=aa[u];aa[u]:=t;

  end;

  end;

  procedure main; {主過(guò)程}

  var

  u,t,r,o:integer;

  begin

  for i:=1 to d do{找出在何處需設通道隔開(kāi)交頭接耳的學(xué)生}

  if y[i]=q[i] then

  if x[i]p[i] then inc(a[x[i]]) else inc(a[p[i]])

  else if y[i]q[i] then inc(b[y[i]]) else inc(b[q[i]]);

  td(a,k,m,aa);

  td(b,l,n,bb);

  end;

  begin

  input;

  main;

  output;

  end.

【isbn信息學(xué)聯(lián)賽試題】相關(guān)文章:

足球聯(lián)賽排名_足球聯(lián)賽活動(dòng)總結08-17

排球聯(lián)賽心得總結12-13

排球聯(lián)賽的訓練計劃07-16

足球聯(lián)賽作文07-07

足球聯(lián)賽方案04-02

足球聯(lián)賽方案04-02

校園排球聯(lián)賽活動(dòng)總結03-03

校園足球聯(lián)賽的方案05-17

班級足球聯(lián)賽方案04-07

足球班級聯(lián)賽方案04-03