蓝桥杯高级算法编程实现Word文档下载推荐.docx

上传人:b****5 文档编号:21068366 上传时间:2023-01-27 格式:DOCX 页数:46 大小:284.30KB
下载 相关 举报
蓝桥杯高级算法编程实现Word文档下载推荐.docx_第1页
第1页 / 共46页
蓝桥杯高级算法编程实现Word文档下载推荐.docx_第2页
第2页 / 共46页
蓝桥杯高级算法编程实现Word文档下载推荐.docx_第3页
第3页 / 共46页
蓝桥杯高级算法编程实现Word文档下载推荐.docx_第4页
第4页 / 共46页
蓝桥杯高级算法编程实现Word文档下载推荐.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

蓝桥杯高级算法编程实现Word文档下载推荐.docx

《蓝桥杯高级算法编程实现Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《蓝桥杯高级算法编程实现Word文档下载推荐.docx(46页珍藏版)》请在冰豆网上搜索。

蓝桥杯高级算法编程实现Word文档下载推荐.docx

for(i=0;

i<

i++)

{

p[i]=1;

for(j=0;

j<

j++)

cin>

a[i][j];

}

if(isgood(i+1)==0)

p[i]=0;

(n-1);

if(p[i]!

=0)

cout<

<

i+1<

'

'

;

cout<

endl;

return0;

}

intisgood(intpos)

//由于对角线元素无法对零件好坏的识别提供参考依据,所以每次循环都必须把i=j,或者pos-1=i的情况排除掉;

inti,j,s=0;

//好的零件数量必须大于坏的,否者说明pos判断失误

s+=a[pos-1][i];

if(2*s<

=n)

return0;

//除了主对角线以外的函数,如果pos判断i是好的,但是i却判断pos是坏的,说明判断失误

if(a[pos-1][i]==1&

&

i!

=(pos-1)&

a[i][pos-1]==0)

{

return0;

}

//在对角线以外,如果pos判断了i是正确的,那么i对其他零件的判断必须与pos相同,否者说明判断失误

=(pos-1))

for(j=0;

{

if(i!

=j&

j!

a[i][j]!

=a[pos-1][j])

return0;

}

//如果i已经被确定为坏的,但是pos却将其判断为好的,说明判断失误

if(p[i]==0&

a[pos-1][i]==1&

returnpos;

  最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功。

所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。

  不妨设

  An=sin(1–sin(2+sin(3–sin(4+...sin(n))...)

  Sn=(...(A1+n)A2+n-1)A3+...+2)An+1

  FJ想让奶牛们计算Sn的值,请你帮助FJ打印出Sn的完整表达式,以方便奶牛们做题。

  仅有一个数:

N<

201。

  请输出相应的表达式Sn,以一个换行符结束。

输出中不得含有多余的空格或换行、回车符。

((sin

(1)+3)sin(1–sin

(2))+2)sin(1–sin(2+sin(3)))+1

程序:

#include<

sstream>

stdlib.h>

stringnum2str(doublei)

stringstreamss;

ss<

i;

returnss.str();

stringA(intn)

stringq;

if(n==1)

return"

sin

(1)"

else

q=A(n-1);

stringtemp=(n%2)?

"

+"

:

-"

returnq.insert(q.length()-(n-1),temp+"

sin("

+num2str(n)+"

)"

);

stringS(intn,boolisnumerical)

stringq=(isnumerical?

A

(1):

A1"

)+"

+num2str(n);

inti;

for(i=n-1;

i>

=1;

i--)

q="

("

+q+"

+(isnumerical?

A(n-i+1):

A"

+num2str(n-i+1)))+"

+num2str(i);

returnq;

intstring2int(stringstr)

return(int)atof(str.c_str());

intstr2num(strings)

{

intnum;

stringstreamss(s);

ss>

num;

returnnum;

intN;

N;

N="

A(N)="

A(N)<

S(N)="

S(N,false)<

S(N,true)<

  Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:

一条染色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿。

  比如说,在对学生讲解第1234567009号位置上的碱基时,光看着数字是很难准确的念出来的。

  所以,他迫切地需要一个系统,然后当他输入1234567009时,会给出相应的念法:

  十二亿三千四百五十六万七千零九

  用汉语拼音表示为

  shieryisanqiansibaiwushiliuwanqiqianlingjiu

  这样他只需要照着念就可以了。

  你的任务是帮他设计这样一个系统:

给定一个阿拉伯数字串,你帮他按照中文读写的规范转为汉语拼音字串,相邻的两个音节用一个空格符格开。

  注意必须严格按照规范,比如说“10010”读作“yiwanlingyishi”而不是“yiwanlingshi”,“100000”读作“shiwan”而不是“yishiwan”,“2000”读作“erqian”而不是“liangqian”。

  有一个数字串,数值大小不超过2,000,000,000。

  是一个由小写英文字母,逗号和空格组成的字符串,表示该数的英文读法。

1234567009

shieryisanqiansibaiwushiliuwanqiqianlingjiu

stringshu[10]={"

ling"

"

yi"

er"

san"

si"

wu"

liu"

qi"

ba"

num"

};

stringbei[4]={"

shi"

bai"

qian"

stringbeibig[14]={"

wan"

yi"

zao"

jing"

gai"

zi"

rang"

gou"

jian"

zheng"

zai"

ji"

henghesha"

//stringshu[10]={"

零"

一"

二"

三"

四"

五"

六"

七"

八"

九"

//stringbei[4]={"

十"

百"

千"

//stringbeibig[19]={"

万"

亿"

兆"

京"

垓"

秭"

穰"

沟"

涧"

正"

载"

极"

恒河沙"

阿僧祗"

那由他"

不可思议"

无量"

大数"

intcar2int(charcar)

returncar-'

0'

stringshu1_4(stringp)//1~9999,包括0001,9999;

intwei,i,temp=0;

wei=p.length();

wei;

i++)

if(p[i]=='

temp++;

else

break;

if(temp==wei)

if(temp!

=0&

temp<

wei)

"

+shu[0];

/////////////////////////////////////////

//q=shu[0];

wei=wei-temp;

p=p.substr(temp);

if(wei==2&

temp==0&

p[0]=='

1'

//return"

shi"

+shu[car2int(p[1])];

+(p[1]=='

?

(shu[car2int(p[1])]));

for(i=0;

if(p[i]!

='

q+=((i!

=0||temp!

=0)?

)+shu[car2int(p[i])]+bei[wei-i-1];

//////////////////////////////////////

//q+=shu[car2int(p[i])]+bei[wei-i-1];

else

q+=shu1_4(p.substr(i));

break;

}

}

stringshu1_n(stringp)

stringq,ptemp;

intN,i,lennum,weinum;

N=p.length();

weinum=(N+3)/4;

lennum=4-(weinum*4-N);

q=shu1_4(p.substr(0,lennum))+beibig[weinum-1];

p=p.substr(lennum);

weinum-1;

if(shu1_4(p.substr(4*i,4))=="

continue;

q+="

+shu1_4(p.substr(4*i,4))+beibig[weinum-2-i];

//shu={"

//bei={"

//beibig={"

stringreadnum;

while(cin>

readnum&

readnum!

="

break"

cout<

读作:

shu1_n(readnum)<

  给定一条标有整点(1,2,3,...)的射线.定义两个点之间的距离为其下标之差的绝对值.

  Laharl,Etna,Flonne一开始在这条射线上不同的三个点,他们希望其中某个人能够到达下标最大的点.

  每个角色只能进行下面的3种操作,且每种操作不能每人不能进行超过一次.

  1.移动一定的距离

  2.把另一个角色高举过头

  3.将举在头上的角色扔出一段距离

  每个角色有一个movementrange参数,他们只能移动到没有人的位置,并且起点和终点的距离不超过movementrange.

  如果角色A和另一个角色B距离为1,并且角色B没有被别的角色举起,那么A就能举起B.同时,B会移动到A的位置,B原来所占的位置变为没有人的位置.被举起的角色不能进行任何操作,举起别人的角色不能移动.同时,每个角色还有一个throwingrange参数,即他能把举起的角色扔出的最远的距离.注意,一个角色只能被扔到没有别的角色占据的位置.我们认为一个角色举起另一个同样举起一个角色的角色是允许的.这种情况下会出现3个人在同一个位置的情况.根据前面的描述,这种情况下上面的两个角色不能进行任何操作,而最下面的角色可以同时扔出上面的两个角色.你的任务是计算这些角色能够到达的位置的最大下标,即最大的数字x,使得存在一个角色能够到达x.

  输入共三行,分别为Laharl,Etna,Floone的信息.

  每一行有且仅有3个整数,描述对应角色的初始位置,movementrange,throwingrange.

  数据保证3个角色的初始位置两两不相同且所有的数字都在1到10之间.<

/div>

  仅有1个整数,即Laharl,Etna,Flonne之一能到达的最大距离.

933

431

233

15

样例说明

  一开始Laharl在位置9,Etna在位置4,Flonne在位置2.

  首先,Laharl移动到6.

  然后Flonne移动到位置5并且举起Etna.

  Laharl举起Flonne将其扔到位置9.

  Flonne把Etna扔到位置12.

  Etna移动到位置15.

英文题目:

E.LiftandThrow

timelimitpertest1.5seconds

memorylimitpertest256megabytes

Inputstandardinput

Outputstandardoutput

Youaregivenastraighthalf-linedividedintosegmentsofunitlength,whichwewillcallpositions.Thepositionsarenumberedbypositiveintegersthatstartwith 

fromtheendofhalf-line,i.e. 

1, 

2, 

andsoon.Thedistancebetweenthepositionsistheabsolutedifferencebetweentherespectivenumbers.

Laharl,EtnaandFlonneoccupysomepositionsonthehalf-lineandtheywanttogettothepositionwiththelargestpossiblenumber.Theyareoriginallyplacedindifferentpositions.

Eachofthecharacterscanperformeachofthefollowingactions 

nomorethanonce:

●Moveacertaindistance.

●Grabanothercharacterandlifthimabovethehead.

●Throwtheliftedcharacteracertaindistance.

Eachcharacterhasa 

movementrange 

parameter.Theycanonlymovetofreepositions,assumingthatdistancebetweenthosepositionsdoesn'

texceedthemovementrange.

Onecharactercanliftanothercharacterifthedistancebetweenthetwocharactersequals 

1,andnoonealreadyholdsthatanothercharacter.Wecanassumethattheliftedcharactermovestothesamepositionasthepersonwhohasliftedhim,andthepositioninwhichhestoodbeforebecomesfree.Aliftedcharactercannotperformanyactionsandthecharacterthatholdshimcannotwalk.

Also,eachcharacterhasa 

throwingrange 

parameter.Itisthedistanceatwhichthischaractercanthrowtheoneliftedabovehishead.Hecanonlythrowacharactertoafreeposition,andonlywhenthereisaliftedcharacter.

Weacceptthesituationwhenonepersongrabsanotheronewhoinhisturnhasthethirdcharacterinhishands.Thisformsa"

column"

ofthreecharacters.Forexample,LaharlcanholdEtnawhileEtnaholdsFlonne.Inthiscase,EtnaandtheFlonnecannotperformanyactions,andLaharlcanonlythrowEtna(togetherwithFlonne)atsomedistance.

Laharl,EtnaandFlonneperformactionsinanyorder.Theyperformactionsinturns,thatisnotwoofthemcandoactionsatthesametime.

Determinethemaximumnumberofpositionatleastoneofthecharacterscanreach.Thatis,suchmaximalnumber 

sothatoneofthecharacterscanreachposition 

x.

Input

Thefirstlinecontainsthreeintegers:

Laharl'

sposition,hismovementrangeandthrowingrange.ThesecondandthethirdlinesdescribeEtna'

sandFlonne'

sparameterscorrespondinglyinthesimilarform.Itisguaranteedthatthethreecharactersoccupydistinctpositions.Allnumbersintheinputarebetween 

and 

10,inclusive.

Output

Printasinglenumber—themaximumordinalnumberofpositionwhicheitherLaharl,EtnaorFlonnecanreach.

Sampletest(s)

input

output

Note

Letusexplainhowtoreachposition 

15 

inthesample.

InitiallyLaharloccupiesposition 

9,Etna—position 

andFlonne—position 

2.

FirstLaharlmovestoposition 

6.

ThenFlonnemovestoposition 

andgrabsEtna.

LaharlgrabsFlonneandthrowstoposition 

9.

FlonnethrowsEtnatoposition 

12.

Etnamovestoposition 

15.

Code

cstdio>

cstring>

#incl

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1