蓝桥杯高级算法编程实现Word文档下载推荐.docx
《蓝桥杯高级算法编程实现Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《蓝桥杯高级算法编程实现Word文档下载推荐.docx(46页珍藏版)》请在冰豆网上搜索。
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
1
fromtheendofhalf-line,i.e.
1,
2,
3
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
x
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
4
andFlonne—position
2.
FirstLaharlmovestoposition
6.
ThenFlonnemovestoposition
5
andgrabsEtna.
LaharlgrabsFlonneandthrowstoposition
9.
FlonnethrowsEtnatoposition
12.
Etnamovestoposition
15.
Code
cstdio>
cstring>
#incl