顺序结构
1、请编写一个程序,求一个正方的周长。 2、请编写一个程序,求一个长方形的周长。 3、请编写一个程序,求一个三角形的周长。
4、请编写一个程序,从键盘输入两个整数,要求求和然后输出和。 例如: 输入 1 4 输出 5
5、要求从键盘输入一个三位数,要求百位变十位,十位变个位,个位变百位: 例如: 输入 123 输出 312
6、输入一个四位数要求按如下交换输出: 例如 :输入 1234 输出 4321
7、输入一个四位数要求输入各位数字的和。 例如: 输入 4567 输出 22
8、编一程序,键盘输入整数A,B的值,然后打印A除以B的商的整数部分及余数。
9、输入一个时、分、秒,把它转换为一个秒数。 例如 输入 2 3 4 代表2小时3分钟4秒 输出 7384 代表一共有7384 秒
10、求三角形面积:给出三角形的三个边长为a,b,c,求三角形的面积。 提示:根据海式来计算三角形的面积:
abc2 S=;Area=S(Sa)(Sb)(Sc)
11、编一程序,从键盘输入整数A,B的值,然后把A,B的值交换后输出。从键盘输入两个整数,打印出更小的那个数。
12、设X,Y,Z的值分别是FALSE,TRUE,FLASE。写出下列逻辑表达式的值:
not x and not y; true and x or y; (x and z) or (z and y); x or z and y; (4>5) and (7<8) (8>9) or ( 9<10)
2 and ((3=3) or (3<7))
选择结构
13、读入三个整数,从小到大输出。
14、从键盘输入一个数,判断它的奇偶性,如果是奇数则输出yes,否则输出no。
15、从键盘读入一个数,判断它的正负。是正数,则输出\"+\",是负数,则输出\"-\"。
16、从键盘输入一个数,如果是两位数那么输入yes否则输入no。 17、输入两个数a,b,输出较大数的平方值。
18、铁路托运行李规定:行李重不超过50公斤的,托运费按每公斤0.15元计费;如超50公斤,超过部分每公斤加收0.10元。编一程序完成自动计费工作。
19、某超市为了促销,规定:购物不足60元的按原价付款,超过60不足200的按九折付款,超过200元的,超过部分按八折付款。编一程序完成超市的自动计费的工作。
20、打印某年某月有多少天。(提示:A、闰年的计算方法:年数能被4整除,并且不能被100整除;或者能被400整除的整数年份。B、利用MOD运算可以判断一个数能否被另一个数整除)。
21、编写一个程序,功能是从键盘输入一个整数,判断它是否二位数,如果是,就打印它,然后结束程序,
22、编写一个程序,功能是从键盘输入三个整数,打印出其中最大的一个值。
23、当前小学生的成绩单由以前的百分制改为优秀、良好、合格、不合格四个等级的等级制。编一程序完成分数的自动转换工作。转换规则如下:60分以下
的为不合格;60到69分为合格;70到分为良好;90分以上的为优秀。(提示:可以利用DIV运算来使程序更简明)
循环结构
分别用repeat,while循环做以下习题。
24、计算1—1000之间能同时被3和5整除的整数的和。 25、求所有的三位数中十位数能被个位数和百位数之和整除的数。 26、求水仙花数。所谓水仙花数,是指一个三位数abc,如果满足a^3+b^3+c^3=abc,则abc是水仙花数。
27、求所有满足条件的四位数: (1)这四位数是11的倍数; (2)b+c=a; 28、计算下列式子的值:
28a (1)1+3+……+99 28b (2)1+2+4+8+…+1024 29、输入一个整数,计算它各位上数字的和。(注意:是任意位的整数)
30、输入一整数A,判断它是否质数。(提示:若从2到A的平方根的范围内,没有一个数能整除A,则A是质数。) 用for循环做以下习题 31、1+3+5+…..+…..99=?
32、1+1/2+1/3+1/4+……1/100=?
33、1*2+2*3+3*4+……+n*(n+1)=?
34、1+1/2!+1/3!+…..1/n!=?
35、求水仙花数。所谓水仙花数,是指一个三位数abc,如果满足a^3+b^3+c^3=abc,则abc是水仙花数。
36、输入一整数A,判断它是否质数。(提示:若从2到A的平方根的范围内,没有一个数能整除A,则A是质数。)
37、1+(1+3)+(1+3+5)+ ……(1+3+5+……+n)=?n为奇数。
38、s=-1+3-5+7-9+……n n为奇数。
二、综合练习题
39、计算下列式子的值: (1)1+2+……+1000 1a
(2)1+3+5+……+97+99 2a (3)1+2+4+8+…+1024 3a
40、输入一个四位数,求它各位上数字的和。
41、求所有的三位数中十位数能被个位数和百位数之和整除的数。 42、求水仙花数。所谓水仙花数,是指一个三位数abc,如果满足a^3+b^3+c^3=abc,则abc是水仙花数。
43、 求所有满足条件的四位数: (1)这四位数是11的倍数; (2)b+c=a; 44、输入一个整数,计算它各位上数字的和。(注意:是任意位的整数) 45、输入一整数A,判断它是否质数。(提示:若从2到A的平方根的范围内,没有一个数能整除A,则A是质数。)
46、求两个数的最小公倍数和最大公约数。(提示:公约数一定小于等于两数中的小数,且能整除两数中的大数。公倍数一定大于等于两数中的大数,且是大数的倍数,又能给两数中的小数整除。)
47、编写一个译码程序,把一个英语句子译成数字代码。译码规则是以数字1代替字母A,数字2代替字母B,……,26代替字母Z,如遇空格则打印一个星号‘*’,英文句子以‘.‘结束。
48、“百钱买百鸡”是我国古代的著名数学题。题目这样描述:3文钱可以买1只公鸡,2文钱可以买一只母鸡,1文钱可以买3只小鸡。用100文钱买100只鸡,那么各有公鸡、母鸡、小鸡多少只?与之相似,有\"鸡兔同笼\"问题。 49、输入一个正整数N,把它分解成质因子相乘的形式。 如:36=1 X 2 X 2 X 3 X 3; 19=1 X 19
50、判断一字符串是否是回文数,如121、12321、ABA等(字符串输入时以‘.’结束)。
如输入:12321. 输出:yes
51、打印下列图案:(输入N值来控制图案的规模,下列图案均以N=3为例)
#
&
# #
@ *
@ @ * *
& &
# # # @ @ @ * * *
& & & & & & *
& & & & & &
* * * * * * * *
51a 51b 51c 51d
52、计算1—1000之间能同时被3和5整除的整数的和。
53、打印下列图形: 1 121 12321 1234321 12321 121 1
54、一百匹马驮一百块瓦,一匹大马可以驮3块,一匹母马可驮2块,小马2匹可驮1块。试编程求需要各种马多少匹?
55、有三种纪念邮票,第一种每套一张售价2元,第二种每套一张售价4元,第三种每套9张售价2元。现用100元买了100张邮票,问这三种邮票各买几张?
56、赵、钱、孙、李、周五人围着一张圆桌吃饭。饭后,周回忆说:“吃饭时,赵坐在钱旁边,钱的左边是孙或李”;李回忆说:“钱坐在孙左边,我挨着孙坐”。结果他们一句也没有说对。请问,他们在怎样坐的?
57、找数。一个三位数,各位数字互不相同,十位数字比个位、百位数字之和还要大,且十位、百位数字之和不是质数。编程找出所有符合条件的三位数。 注:1. 不能手算后直接打印结果。
2. “质数”即“素数”,是指除1和自身外,再没有其它因数的大于1
的自然数。
58、选人。一个小组共五人,分别为A、B、C、D、E。现有一项任务,要他们中的3个人去完成。已知:(1)A、C不能都去;(2)B、C不能都不去;(3)如果C去了,D、E就只能去一个,且必须去一个;(4)B、C、D不能都去;(5)如果B去了,D、E就不能都去。编程找出此项任务该由哪三人去完成的所有组合。
59、输入一个字符串,内有数字和非数字字符。如A123X456Y7A,302ATB567BC,打印字符串中所有连续(指不含非数字字符)的数字所组成的整数,并统计共有多少个整数。
60、甲、乙、丙、丁四人共有糖若干块,甲先拿出一些糖分给另外三人,使他们三人的糖数加倍;乙拿出一些糖分给另外三人,也使他们三人的糖数加倍;丙、丁也照此办理,此时甲、乙、丙、丁四人各有16块,编程求出四个人开始各有糖多少块。
61、截数问题: 任意一个自然数,我们可以将其平均截取成三个自然数。例如自然数135768,可以截取成13,57,68三个自然数。如果某自然数不能平均截取(位数不能被3整除),可将该自然数高位补零后截取。现编程从键盘上输入一个自然数N(N的位数<12),计算截取后第一个数加第三个数减第二个数的结果。
62、从键盘输入一段英文,将其中的英文单词分离出来:已知单词之间的分隔符包括空格、 问号、句号(小数点)和分号。
例如:输入:There are apples; oranges and peaches on the table. 输出:there are apples oranges and peaches on the table
63、A,B,C,D,E五个人合伙夜间捕鱼,凌晨时都疲惫不堪,各自在河边的树丛中找地 方睡着了,日上三竿,E第一个醒来,他将鱼数了数,平分成五分,把多余的一条扔进河中, 拿走一份回家去了,D第二个醒来,他并不知道有人已经走了,照样将鱼平分成五分,又扔 掉多余的一条,拿走自己的一份,接着C,B,A依次醒来,也都按同样的办法分鱼(平分成 五份,扔掉多余的一条,拿走自己的一份),问五人至少合伙捕到多少条鱼。
也许你能用数学办法推出鱼的条数,但我们的要求你编出一个程序,让计算机帮你算出鱼的总数。
、试编程找出能被各位数字之和整除的一切两位数。
65、一个正整数的个位数字是6,如果把个位数字移到首位,所得到的数是原数的4倍,试编程找出满足条件的最小正整数。
66、某本书的页码从1开始,小明算了算,总共出现了202个数1,试编程求这本书一共有多少页?
67、从键盘上输入两个不超过32767的整数,试编程序用竖式加法形式显示计算结果。
例如: 输入 123, 85 显示: 123 + 85 --------- 208
68、有30个男人女人和小孩同在一家饭馆进餐,共花了五十先令,其中男宾3先令,女宾2先令,小孩1先令。试编程求出男人女人小孩各多少人?
69、找出100到999之间的整数中所有等于它每位数字立方和的数
70、求所有满足条件的四位数: (1)这四位数是11的倍数; (2)a,b,c,d均是小于10 的互不相等的自然数; (3)b+c=a; (4)bc是完全平方数.
71、已知四位数3025有一个特殊性质: 它的前两位数字30和后两位数字25的和是 55, 而55的平方刚好等于该数(55*55=3025). 试编一程序打印所有具有这种性质的四位数.
72、编程找出四个互不相等的自然数, 它们之中任意两数之和为偶数, 任意三数之和可以被3整除, 而且这四个数的和越小越好(已知它们的和不大于50).
73、以不同的字母代表0--9之间的数字, 现有如下等式成立: a+bc+def=ghij,编程求出满足上述条件等式的个数并将所有等式打印输出.
74、下面的竖式表示, 图中的\"*\"号只能用素数2,3,5,7代替, 因此称为素数乘法竖式.
* * * × * * --------------- * * * * * * * * ---------------- * * * * *
编程找出此乘法竖式的所有可能方案.
75、出售金鱼: 出售金鱼者决定将缸里的金鱼分五次全部卖出: 第一次卖出全部金鱼的一半加二分之一条; 第二次卖出剩余金鱼的三分之一加三分之一条; 第三次卖出剩余金鱼的四分之一加四分之一条; 第四次卖出剩余金鱼的五分之一加五分之一条;
现在还剩下11条金鱼一次卖出. 问缸里原来有多少条金鱼.
76、一个四位数是一个完全平方数,减去一个每位数字都相同的四位数( 如 1111, 5555)后, 仍是一个完全平方数. 请编程打印出所有这样的四位数.
77、将1,2,3,4,5,6,7,8,9这九个数字组成三个三位数, 使每个数都是完全平方数.
78、如果一个数从左边读和从右边读都是同一个数, 就称为回文数. 例如: 6886就是一个回文数. 编程找出所有既是回文数又是素数的三位数.
79、有一个八位数12345679, 若它乘以9, 则得九位数111111111, 试求:素数 (1)当这个数乘以什么数时, 才能得到全部由5所组成的九位数? (2)当这个数乘以什么数时, 才能得到全部由9所组成的九位数?
80、李先生和他的孙子同出生于20世纪, 他的孙子与他的年龄之差为60岁, 李先生和他的孙子出生年份被3,4,5,6除, 余数分别为1,2,3,4. 编程求出李先生和他的孙子各出生在哪一年.
81、一位妇女在河边洗碗. 邻居问:\"家里来了多少个客人?\她回答:\" 每两个客人合用一个菜碗, 每三个客人合用一个汤碗, 每四个客人合用一个饭碗, 共用碗65个\". 问共来了多少客人?
82、16/是一个分子和分母都是两位数的真分数, 且分子的个位数与分母的十位数相同. 非常奇怪的是: 如果把该分数的分子的个位数和分母的十位数同时划去, 所得到的结果正好等于原分数约分后的结果. 例 16/=1/4. 编程找出所有满足上述条件的真分数.
83、公鸡每只值5文钱, 母鸡每只值3文钱, 小鸡3只值1文钱. 今用100 文钱买鸡共100只, 问公鸡, 母鸡, 小鸡各儿只.
84、甲去买东西, 要付给乙19元, 而甲只有3元一张的钱, 乙只有5元一张的钱. 请为他们设计一个交换方案.
85、一米店有三箩米被盗去一部分, 其中左箩剩1合, 中箩剩14合, 右箩剩1合. 小偷甲说他用一马勺在左箩舀米, 每次舀满, 装到布袋. 小偷乙说他用一只木鞋在中箩偷. 小偷丙说他用一只漆碗在右箩中偷. 作案物经标定: 马勺一次舀19合, 木鞋一次舀17合, 漆碗一次舀12合. 问米店被偷走多少米? 甲乙丙各偷多少米?
86、五户人家共用一口井, 如果用A家的绳2条, B家的绳1条接长, 正好抵达水面; 又用B家绳3条, C家绳1条; 或用C家绳4条, D家绳1条; 或用D家绳5条, E家绳1条; 或用E 家绳6条, A家绳1条接长, 也都一样正好抵达水面, 问井深和各家的绳子各长多少?( 不超过999的整数解).
87、有六箱货物,重分别是5吨、2吨、3.5吨、1.7吨、1吨、5.1吨。现有一台货车,载重量10吨。设计一个程序,使这次车运走的货物最多。
88、某电台组织一次智力竞赛,计划安排奖励30人。准备了50件奖品。得一等奖者可得3件,二等奖2件,三等奖1件。希望把所有奖品都发到获奖者手中。请找出所有方案(即各等奖各有多少人)。
、从键盘输入二个整数a, b(b<>0), 若a能被b整除, 就打印\"YES\否则打印\"NO\"。
90、从键盘输入一个整数, 如果是奇数就直接打印, 否则反复除以2, 直到商为奇数为止, 打印这个奇数商。
91、从键盘输入一个小于1000的正整数, 若此数的各位数字之和能被7整除, 则打印, 否则不打印。
92、求100以内的所有素数。
93、输入一个大于1的自然数, 打印出它的质因数分解式. 如输入75则打印: 75=3*5*5.
94、某自然数N(1 96从键盘输入两个自然数, 求它们的最大公约数和最小公倍数。 97、一个自然数是素数, 且它的数字位置经过任意对换后仍为素数, 称为绝对素 数. 例如 13. 试找出所有这样的四位绝对素数。 98、编程验证对任意自然数N, 如果各位数字平方和不是1, 则求平方和的各位数字的平方和, 最后必有145, 42, 20, 4, 16, 37, 58, 之无穷循环。 99、五位数 4H97H 能被3整除, 且它的最低二位数字所组成的数 7H 能被6整除, 求这个五位数字。 100、975*935*972*( ), 在( )中填什么自然数使四个数的乘积末四位全为0, 求出最小值。 101、修改31743的某一位上的数字, 使之成为823的倍数。 102、一个自然数, 若它的质因数至少是两重的(相同的质因数至少个数为二个, 如36=2*2*3*3)则称该数为\"漂亮数\". 若相邻两个自然数都是\"漂亮数\就称它们为\"孪生漂亮数\". 例如8与9就是一对. 请编程再找出一对\"孪生漂亮数\"。 103、任意输入二个自然数, 若商为整数, 则直接显示商; 否则把商分解成一个自然数和一个正的既约真分数之和才显示。 例如: 输入: 9, 3 显示: 9/3=3 输入: 8, 6 显示: 8/6=1+1/3 104、任意输入四个自然数a,b,c,d, 看成二个分数a/b, c/d. 求这二个分数之和. 和的显示格式为: 输入 3,2,1,6 输出: 3/2+1/6=1+2/3。 105、在自然数中, 各位数字之和的11倍正好等于自身的自然数只有一个. 请找出这个自然数。 106、求所有不超过1000的这样的整数, 它的平方的末二位数字相同但不为0。 107、P是一个大于3的质数, 对某个自然数N, PN恰好是五位数, 且至少有三个位上的数字相同, 求P至少是多少。 108、编程求最小正整数M,N(0 例如: X=213, 则有 213→321-123=198 981-1=2 982-2=693 963-369=594 954-459=495 954-459=495 这时Y=954. 110、计算: 111、小明的妈妈是负责分发全厂工资的。为使分发时有足够多的零钞,同时又尽量不使每个人领到的钱太零碎。每个月她都要计算出各种面值的钞票(100元、50元、10元、5元、2元、1元,假设每个人的工资都是整数元)各需要多少张。你能否为她设计一个程序,从键盘输入10个人的工资,再计算出各种面值的钞票各需要多少张? 112、任给一个自然数n,求出这个自然数不同因数的个数M. 113、给出一个数n的不同因数个数m,求最小满足要求的自然数n,即n有m个不同的因数。 例如输入 2 则输出 2 因为2有2个因数。 114、m,n为自然数,其上限为k,试编写程序,由键盘输入自然数k找出满足条件: (n^2-mn-m^2)^2=1 且使m^2+n^2达到最大的m,n。 11111......11*21*2*31*2*3*...*20 115、求50到100中所有奇数。 116、商店卖水果,10斤以下8元每斤,100斤以下打9.5折,即8*0.95元每斤,100斤以上含100斤打9折。输入购买水果的斤数,输出应付钱数,保留两位小数。 117、 从键盘输入10个数,求出其中的最小数。 118、 输出能被11整除且不含重复数字的三位数。并统计个数。 119、 已知一个四位数为ABCD,若A+C和B+D的值相等,则称这个四位数 为交叉数,求四位数的交叉数和个数。 120、 输入一个字符串,将其中所有的‘god’改为‘good’。 121、 输入两个正整数a,b(1<=a<=b<=1000),输出它们的最大公约数和 最小公倍数。如:输入4 6,输出2 12。 122、 从键盘随意输入10个整数,输出第5大数。 123、有一根长为514CM的钢筋,现在要截成23CM、15CM和19CM的短料,问在各至少截一根的前提下,问各截多少根,使所剩余料最少。 124、统计100以内素数的个数。 125、给出一个正整数,求出它的因子,并按下面的格式打印出来:15=3*5,20=2*2*5,28=2*2*7 126、N的阶乘之和是1!+2!+…+n!, n小于100。 127、求1到100中所有奇数。 128、求1到200中所有能被2、3、7整除的数。 129、输入一个学生的语文成绩0分到100分,如果是85分到100是优秀,输出“BEST”,如果是 60分到84是及格,输出“GOOD”,如果是 0分到59是不及格,输出“BAD”。 130、输入10个学生的语文成绩,分别统计成绩在85~100分,60~85分和60分以下,各分数段中的人数。 131、筐中有鸡蛋是7的倍数,二个二个一为,三个三个一数,四个四个一数,五个五个一烽均余1,求满足此条件的最小蛋数。 132、计算N!,其中N由键盘输入。 133、求1至200的和。 134、读入十个数,计算它们的和与积以及平均值。 135、任意输入一个三位数,反过来输出。 136、水仙花数是一个三位数,并且它的各数码的立方和正好等于它本身。如: 153=1×1×1+5×5×5+3×3×3。 137、求能被11整除,且数码的平方和是122的所有的三位数。 138、求能被11整除,且不含重复数字的三位数?有多少个。 139、求2~1000中的完数,(因子和等于它本身的数为完数。例如28的因子是1,2,4,7,14,且1+2+4+7+14=28,则28是完数)。 140、找2~1000中的亲密数对(如果A 的因子和等于B,B的因子和等于A,且A不等于B,则称A,B为亲密数对)。 141、从键盘输入三个数,输出其中的最大数。 142、从键盘输入20个数,求出其中的最小数。 143、用循环语句从小到大依次输出26个大写字母,再返向输出。 144、输入两个运算量及一运算符,输出运算结果。这相当于计算器计算。 145、非波拉契数列如下:0,1,1,2,3,5,8,13,21…从第三项开始,每一项等于前两项的和。编程求前20项。 146、有一个三位数,三个数字和为20,第三个数 3倍与第二个数的2倍及第一个数三者之和为44,第一个数与第二个数和的2倍减去第三个烽的4倍为-14,求这个三位数。 147、父子二人,已知儿子年龄不大于40岁,父亲年龄不大于100岁,10年前父亲的年龄是儿子年龄的4倍,10年后父亲的年龄是儿子年龄的整数倍。问父子现年多少岁。 148、前N个自然数排成一串: X1,X2,X3.....Xn先取出x1,将x2,x3移到数串尾,再取出x4,将x5,x6移到数串尾,....... 类推直至取完.取出的序列恰好是:1,2,3......n要求输入N,求原来的数串的排列方式. 149、有M个猴子围成一圈,每个有一个编号,编号从1到M。打算从中选出一个大王。经过协商,决定选大王的规则如下:从第一个开始,每隔N个,数到的猴子出圈,最后剩下来的就是大王。要求:从键盘输入M,N,编程计算哪一个编号的猴子成为大王。 150、围绕着山顶有10个洞,狐狸要吃兔子,兔子说:“可以,但必须找到我, 我就藏身于这十个洞中,你从10号洞出发,先到1号洞找,第二次隔1个洞找,第三次隔2个洞找,以后如此类推,次数不限。”但狐狸从早到晚进进出出了1000次,仍没有找到兔子。问兔子究竟藏在哪个洞里? 151、输入一个二进制小数,无需判错,请转换成十进制输出。并保留四位小数 位。 输入样例:0.11 输出样例:0.7500 152、纯粹素数是这样定义的:一个素数,去掉最高位,剩下的数仍为素数,再去掉剩下的数的最高位,余下的数还是素数。这样下去一直到最后剩下的个位数也还是素数。求出所有小于3000的四位纯粹素数。 153、求n个最小的连续合数。合数是除了1和本身以外还有其它因子的正整数。 输入样例:3 输出样例: 8 9 10 154、从键盘输入一个正整数,是偶数输出“yes”,否则输出“no”。 155、从键盘输入一个正整数N(1<=N<=30000),求1到N的和。 156、输入一个正整数N(1<=N<=200),如果是素数则输出“TRUE”,否则输出“FALSE 157、输入两个正整数a,b(1<=a<=b<=1000),输出它们的最大公约数和最 小公倍数。如:输入4 6,输出2 12。 158、大家熟知鸡兔同笼问题,输入两个数a,b,a为脚的只数,b为头的个数。编程序输出鸡的只数和兔的只数。 159、将1~9这9 个数字分成三组(每个数字只能使用一次),分别组成3个三位数,且这三位数的值构成1:2:3的比例,试求出所有满足条件的3个三位数。 160、编写程序,任意输入一个三位正整数,然后倒序输出。比如输入的是285 ,输出的就该是582。 161、请看图3-2,判断任意一点A(x,y)是否在圆环内。如果在圆环内输出True,否则输出False。使用输入语句获取X,Y的值。提示:首先推导出判别式为 2<=x2+y2<=25 162、编写程序输入一个任意的正实型数,输出它的平方及平方根,立方及立方根。 提示:求立方根公式为x1/3=e1/3lnx 163、某服装店对售货员发放奖金的办法是:日营业额在1000元以下的,只能拿到基本工资,没有奖金;超过1000元的,奖金为超出部分的2%。编写程序 (x,y) O Y x 输入营业额,计算并输出奖金。 1、编写程序计算y的值。 Sqrt(a+b)+sin(a-b) a>0,b>0 Y= 1 165、从键盘输入三个整数,输出最大数max和最小数min。 166、输入年号、月份,输出该月的天数。 1、3、5、7、8、10、12月为31天,4、6、9、11月为30天,2月平年28天,润年29天。润年判别式为:(y mod 4=0) and (y mod 100<>0) or (y mod 400=0) 167、模拟一个有加、减、乘除运算的简单计算器。当输入一个实型数,再输入一个运算符,再输入一个实型 数后马上输出运算结果。比如:输入3.5*4.0后程序运行结果应该是14.0。 168、求n!(即1*2*..*n),n由键盘输入。分别用for和while 两种循环实现。 169、求1-1/2+1/3-1/4…+1/99-1/100的值。 a=0,b=0 其他 a2+b2 170、求圆周率π≈1-1/3+1/5-1/7+…+(-1)n-11/(2n-1),求π的近似值,真到某项的绝对值小于10-6为止。 177、利用双重循环编写出打印出右边数字方阵的程序。 1 2 3 4 5 6 2 3 4 5 6 7 3 4 5 6 7 8 5 6 7 8 9 10 6 7 8 9 10 11 178、求e的近似值:e≈1+1/1!+1/2!+1/3!+…+1/n!,当某项小于10-5时停止。 179、编写程序,打印出100~200之内的全部素数。 180、给出一个正整数,求出它的因子,并按下面的格式打印出来: 15=3*5,20=2*2*5,28=2*2*7 181、找出1~1000之间的全部“水仙花数”。“水仙花数”是这样一个整数,它的每一位数字的立方之和正好等于这个三位数,例如153是“水仙花数”,因为13+53+33=153。 182、找出1~100之间的全部“同构数”。“同构数”是这样一种数:它出现在 它的平方数的右端。例如:5的平方是25,5就是同构数,25也是构数。 183、猴子分苹果》趣味程序设计:傍晚,五只猴子在树林里发现一堆苹果,约定第二天早上再来平分,于是各自回去睡觉。半夜一只猴子醒来,把苹果平分了五分,发现多出一个苹果。给谁都不合适,又不能扔掉,只好自己吃了,然后它把其中一堆藏了起来,剩下的四堆又混在一起,高高兴兴地睡觉去了。过了一会,又有一只猴子醒来,它和第一只猴子一样,把苹果平分了五份,发现多出一个苹果,给谁都不合适,又不能扔掉,只好自己吃了,然后它把其中一堆藏了起来,剩下的四堆又混在一起,也去睡觉了。这一夜五只谗嘴的猴子都没睡塌实,五只猴子都以同样的办法把苹果分一次。第二天早上,五只猴子起来看着变少了的苹果各自心照不宣,它们一起把苹果分了五份,正好一个不多一个不少。请编写程序计算出一开始总共有多少苹果。 184、编程打印出三角形九九乘法表。 185、编写程序打印右图。 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1 1 2 3 4 5 6 5 4 3 2 1 186、编程打印出右图 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 187、按下述格式输出杨辉三角形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 188、已知某班学生6人,输入他们的语文、数学、英语三门课程考试成绩,求出每个学生的平均成绩,并排名次。 1、解数学灯迷,有以下算式: A B C D - C D C -------------- A B C A,B,C,D均为一位非负整数,要求找出A,B,C,D的值,请编程序。 190、任意输入两个正整数,求他的最大公约和最小公倍数。 191、已知三角形的三条边长为a,b,c,求三角面积。 提示:用海式求三角形面积s=sqrt(p*(p-a)*(p-b)*(p-c)) p=(a+b+c)/2 192、用筛法求1 到10000的素数。 193、开灯问题。 有从1到n依次编号的n个人和n盏灯。我号人将所有的灯都关掉;2号人 将编号为2的倍数的灯都打开;3号人则将编号为3的倍数的灯作相反处理;以后的人都将凡是自己编号的倍数的灯作相反处理。问第n个人操作后,哪些灯是打开的? 194、12个小朋友手拉手站成一个圆圈,从某一个小朋友开始报数,报到7的那个小朋友退到圈外,然后他的下一位重新报“1”。这样继续下去,最后只剩下一个小朋友,他原来站在什么位置上呢? 195、2m ,3n |m>=1,n>=1}中由小到大排列的前70项数。 196、运动会连续开了n天,一共发了m枚奖章,第一天发1枚并剩下(m-1)枚的1/7,第二天发2枚并剩下的1/7,以后每天按此规律发奖章,在最后一天即第n天发了剩下的n枚奖章。问运动会开了多少天?一共发了几枚奖章? 197、设有如图所示的3n+2个球互连,将自然数1-3n+2分别为这些球编号, 使如图相连的球编号之差的绝对正好是数列1,2,……,3n+2中各数。 ②─⑥ ②─⑨─⑤ ②─⑿─⑤─⑨ │ │ │ │ │ │ │ │ │ ①─⑧─④─⑤ ①─⑾─④─⑧─⑦ ①─⒁─④─⑾─⑦─⑧ │ │ │ │ │ │ │ │ │ ③─⑦ (n=2) ③─⑩─⑥ (n=3) ③─⒀─⑥─⑩ (n=4) 198、递归法判断所输入的一行字符是否回文。这里所说的回文是指输入的一行字符, 以“-”字符为中心,其两边的字符是左右对称的。例如: 输入:ABCDE-EDCBA ↓ 输出:It is symmetry. {输入一行字符是回文} 199、三个齿轮啮合。如图在齿轮箱里 三个齿轮互相衔接,某瞬间两对齿相遇,问各转 多少圈后,这两对齿同时重逢。如图示。 (说明:用a,b,c分别表示三个齿轮的齿数。) 200、设有一个数组A:array [0..N-1] of integer; 存放的元素为0~N-1(1 A[i]编码为:在A[0],A[1],…,A[i-1]中比A[i]的值小的个数 (i=1,2,…,N-1) ∴上面数组A的编码为:B=(0,0,0,3,1,2) 要求编程解决以下问题: (1)给出数组A后,求出其编码; (2)给出数组A的编码后,求出A中的原数据 程序样例: 例一: 输入:Stat=1 {表示要解决的第(1)问题} N=8 {输入8个数} A=1 0 3 2 5 6 7 4 输出:B=0 0 2 2 4 5 6 4 例二: 输入:Stat=2 {表示要解决的第(2)问题} N=7 B=0 1 0 0 4 5 6 输出:A=2 3 1 0 4 5 6 201、求2至N(2≤N≤500)之间的素数。例如: 输入:N=100 输出: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 71 73 79 83 97 total=24 {表示2至100之间的素数有24个} 202、矩阵相乘:已知N×M1矩阵A和M1×M矩阵B(1≤M、M1、N≤10),求矩阵C(=A×B)。例如: 输入:N,M1,M=4 3 4 A= 1 2 3 3 4 5 提示:所谓矩阵相乘(如A×B=C),是指 4 5 6 Cij= ∑(Aik×Bkj)(i=1~N,j=1~M1,k=1~M) 5 –1 –2 B= 1 6 4 2 例如: 2 3 4 1 C11=A11×B11+A12×B21+A13×B31 –1 5 7 –3 =1×1+2×2+3×(– 1) 输出:C= 2 27 33 –5 =2 6 55 63 –5 C42= A41×B12+A42×B22+A43×B32 8 69 78 –5 =5×6+(–1)×3+(–2)×5 5 17 2 15 =17 203、输入N(2≤N≤100)个数字(在0与9之间),然后统计出这组数中相 邻两数字组成的链环数字对出现的次数。例如: 输入:N=20 {表示要输入数的数目} 0 1 5 9 8 7 2 2 2 3 2 7 8 7 8 7 9 6 5 9 输出:(7,8)=2 (8,7)=3 {指(7,8)、(8,7)数字对出现次数分别为2次、3次) (7,2)=1 (2,7)=1 (2,2)=2 (2,3)=1 (3,2)=1 204、生成一个按蛇形方式排列自然数1,2,3,4,5,……,N2的 (1 1 3 2 5 6 8 7 14 15 17 16 27 28 29 4 10 9 12 13 19 18 25 26 31 30 38 39 40 11 21 20 23 24 33 32 36 37 42 41 45 46 47 22 34 35 43 44 48 49 三、算法设计题 筛选法 205、不相同的余数问题,即“秦王暗点兵”或“韩信点兵”: 206、有一楼房的楼梯级数很奇特,一步跨二级多一级,一步跨三级多二级,如果分用四、五、六、七去除级数分别余三、三、五、五。问这楼房共有多少级阶梯?(已知不超过400级)。 207、狼追兔子,兔子躲进了10个环形分布的洞的某一个中。狼在第1个洞中没有找到兔子,就间隔1个洞,到第3个洞中去找,也没找到兔子,就间隔2个洞,到第6个洞中去找。以后狼每次多隔1个洞去找兔子,……。这样狼一直找不到兔子。请问兔子可能躲在哪个洞中? 208、 作800—1000的素数表。 答案:809 811 821 823 827 829 839 853 857 859 863 877 881 883 887 907 911 919 929 937 941 947 953 967 971 977 983 991 997 209、一位数学家和一些游客共81人不幸落入强盗手中,强盗把俘虏排成一队,宣布每天处理所有第2的N次方个俘虏(N>=0),而只放走剩下的最后一个。由于数学家身怀重任,不得不选择了一个恰当的位置而最终被放走。请问他归初排在第几个位置。 答案:80 210、有一堆礼物,工作人员无论是分成二个一份,还是三个、四个、五个、六个一份,总是多一个。请问这堆礼物至少多少个? 答案:61 211、一付扑克中拿出所有的黑桃A……K按顺序排好。第一次翻出第一张牌——A,放在一边,再拿出第二张放到牌的最下面。以后每次都翻出一张牌,再把一张牌放到最后,问第八次翻出的牌是哪一张? 递归 212、有一个数列N,已知:N(1)=1,N(X)=N(X-1)*3-1(X>1),求N(100); 打印‘A’、‘B’、‘C’、‘D’、‘E’这五个字符任意排列的所有情况。 213、从键盘输入一个正整数N,求把它分解成若干个小于等于N的正整数之和的所有情况。 214、求N!(阶乘)。 215、梵塔问题:有三个塔柱(以A,B,C表示)。在A上有一个干塔,共N层。今以一个圆盘代表一层,在盘在下,小盘在上。要求将塔从A移动到C。按规定,每次只能移动一个盘子,可以将盘子放在三个塔柱中任一个上,但大盘子不能放在小盘子上面。试编程序打印出移塔过程。 216、验证卡布列克常数,对于一个四位数N,进行下列运算:(1)将组成该四位数的4个数字由大到小排列,形成由这4个数字组成的最大的四位数;(2)将组成该四位数的4个数字由小到大排列,形成由这4个数字组成的最小的四位数(如果高位为0则取得的数不足4位);(3)求两个数的差,得到一个新的四位数(高位0保留),称为对N进行了一次卡布列克运算。有这样的规律:对一个各位数字不全相同的四位数重复进行若干次卡布列克运算,最后得到的结果总是6174。这个数被称为卡布列克常数。N从键盘输入。输出每一次的卡布列克运算及得到6174时的运算次数。 答案:4 217、对任意自然数N,将其拆分为若干个自然数之和。 218、有一楼梯共有N级,现在从第1级开始,每步可以走1级,也可以走2级、3级,问共有多少种走法并打印所有走法。 219、快速排序法:把数组中的N个数进行快速排序。N及N个数从键盘输入。 220、楼梯有N级台阶,上楼可以一步上一级,也可以一步上两级,请编一递归程序,打印出所有从第1级上到第N级的走法。提示:S(N)=S(N-1)+S(N-2)。 221、 编一递归程序,求组合数已知: 222、 一个凸N边形,通过N边形内部互不相交的对角线,把N边形拆分成 若干个三角形,不同拆分方案的数目用H(N)表示。已知递归函数如下: H(N+1)=H(2)*H(N)+H(3)*H(N-1)+……+H(N)*H(2),(为什么?) H(2)=1。请编写计算H(N)的递归程序。 223、阿克曼函数(ACKMANN)A(X,Y)中,X、Y定义域是非负整数,函数值定义为: A(X,Y)=Y+1 (X=0) (X>0,y=0) A(X,0)=A(X-1,1) A(X,Y)=A(X-1,A(X,Y-1)) mmm1CnCn1Cn1mCn 。 (X,Y>0) 设计一个递归程序,求A(X,Y)。 223、 某人写了N封信和N个信封,结果所有的信都装错了信封。求共有多 少种情况。提示: D(N)=(N-1)*(D(N-1)+D(N-2)), D(1)=0,D(2)=1。为什么? 224、 编写一个程序,生成1,2,3,4,5五个数字的全排列。 225、 编写一个程序,生成1,2,3,4,5,6六个数字中任选出四个数字的 全排列。 回溯法 226、八皇后问题:在一个8X8的国际象棋棋盘上放置8个皇后,使它们不能互相攻击(即任意两个皇后不能在同一行、同一列或同一对角线上)。试求出所有方法。 227、分派整数1、2、3……8给以下各方框,并保证没有两个相邻的方框(垂直相邻,斜对角相邻或水平相邻)含有连续的整数。写一个程序,找出所有的分派方案。 228、在一个NXN的方格网上从某一点(I,J)开始,沿水平、垂直或对角线向前进,最后回到(I,J),形成一个不相交的封闭的折线,设此封闭折线不与方格网的边界相交,求此封闭折线所围成的面积。面积的计算方法是统计折线上以及它所围成的封闭区域中的水平线与垂直线交点的数目。如图中围住了41个点(包括折线本身上的点),因而面积为41。 输入格式:文件读入,格式如下(定义走法:U向上,D向下,L向左,R5 2 R 2 D 3 L 1 D 2 表示起点为(5,2) 表示向右走三点 表示向下走四点 表示向左走一点 表示向下走二点 向右,UL、UR、DL、DR依次累推): DR 2 表示向下右走三点 229、有一个由N个数组成的序列,有0,1两种数,要求在任一个数前1的个数不得超过0的个数,求出所有这样的序列。 以下列方式向5X5矩阵中填入数字。设数字I(1<=I<=25)已被置于座标位置(X,Y),则数字I+1的座标位置应为(E,W),(E,W)可根据以下关系由(X,Y)算出: 230、编一程序,从键盘输入数字R,计算机自动检查在下列算式的“()”中能否填上“+”或“-”号凑成相应的等式。如能凑成,则打印出这些算式。如不能则打印“NO ANSWER”。 231、有NXM张邮票边在一起,但其中某一张被挖掉了。如下图就5X4的邮票的形状和编号,其中第11张被挖掉了,现在要求从这些邮票中撕出4张连在一起的邮票,请打印出所有答案。 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 1( )2( )3( )4( )5( )6( )7( )8( )9=R (1)(E,W)=(X±3,Y); (2)(E,W)=(X,Y±3); (3)(E,W)=(X±2,Y±2)。 编写一个程序,当数字1被指定于某个起始位置时,列举出其它24个数字 应在的位置;列举出该条件下的所有可能方案,输出所有可能的情况。 输入格式: 表示5行4列 表示第3行第3列的邮票被撕掉了,如果输入0 0则表示没有撕掉 5 4 3 3 邮票。 输出格式 1-2-3-4 1-5-9-13 5-9-13-17 1-5-6-7 1-6-7-10 …… 以下若干行为各种方案 四、编程提高题 232、给出一个自然数N(1<=N<=15,且N为奇数),要求找出这样的N个连续的正整数,使得前(N+1)/2个正整数的平方和,等于后(N-1)/2个正整数的平方和。 例如:当N=5时 满足条件的5个正整数为:10,11,12,13,14 且102+112+122=132+142 输入:N 输出:满足条件的N个正整数 234、给出一个正整数N(N<=32767),要求将其分解成质因子的连乘积。 例如:当N=24时 结果为:24=2*2*2*3(A) 又如;当N=13时 输出结果为:13=13 (B) 输入:N 输出:如(A)或(B)格式的结果 235、输入N和一组整数(以0结束),N表示编号1,2,…,N的箱子,一组整数表示零件的重量(单位为G)。现要求将一批零件,分别装入编号为1,2,…,N的N只箱子中去,装入的方法是: 0G< 零件重量<100G 装入1号箱 100G<=零件重量<150G 装入2号箱 150G<=零件重量<200G 装入3号箱 …… …… 以此类推。装完之后,要求找出哪只箱子中的零件个数最多,若有相同的最多则要求全部列出(仅列出箱子的号数即可),若因零件太重无箱子可装,也应输出这类零件的个数。 236、编制一个乘法运算的程序从键盘读入2个100以内的正整数,进行乘法计算并输出。 例如:输入格式: ,13 输出格式: × 13 267 0 1157 又如: 输入格式:16, 8 输出格式: 16 × 8 128 237、输入三个自然数N,I,J(1<=I<=N,1<=J<=N)。N表示有一个N行N列的棋盘格子,(I,J)表示棋盘中格子的位置。如:N-4,I-2,J-3表示了棋盘中的第二行第三列的格子。 如下图: 第一列 第二列 第三列 第四列 第1行 第二行 第三行 第四行 (2,3) 要求编制一个程序,根据输入的N,I,J的值,输出与格子(I,J)在同一行、同一列、同一对角线上的所有各自位置。 例如:当N=4,I=2,J=3时,输出的结果是: (2,1)(2,2)(2,3)(2,4) {同一行上格子的位置} (1,3)(2,3)(3,3)(4,3) {同一列上格子的位置} (1,2)(2,3)(3,4) {左上到右下对角线上的格子位置} (4,1)(3,2)(2,3)(1,4) {左下到右上对角线上的格子位置} 238、问题描述:给出一个正整数N(1≤N≤100),即可得到一个由N 个正整数组成的从1开始的如下数列:1,2,3,4,……N-2,N-1,N,且可求出从1开始的这N个数的全部各个数位上的数字之和。 例如:当N=12时,这12个数是:1,2,3,4,5,6,7,8,9,10,11,12。 则 这 12 个 数 的 数 字 之 和 为 : S=1+2+3+4+5+6+7+8+9+1+0+1+1+1+2=51 239、问题描述: 输入两个真分数的分子与分母(分子与分母的值均不大于3000),对这两个分数进行加法计算。若符合条件,则应将计算的结果化为带分数。 例如: 输入 输出 2, 5 2,3 3,8 1,8 240、问题描述: 键盘输入两个高精度的整数,编程实现这两个高精度整数的减法运算,两数均不会超过240位。要求输出该减法运算的算式与结果。 例如: 输入 输出 4/8 (不用约分) 1+1/15(带分数的表达形式) 99998,9079 99998-9079=90919 123456,345678 123456-345678=-222222 241、求数组元素 问题描述:给出任意一个自然数N(N≤100),输出满足下列条件的数组元素及不同方案数,条件是: <1>数组元素由各不相同的自然数组成。 <2>数组元素的最后一个元素必为 n 。 <3>每一个数组元素都不小于它前面一个元素的平方( 第一个元素除 )。 <4>数组中包含的元素个数可不相同, 但至少要有一个元素。 例如: n=1 数组(1) k=1 (以 k 记录不同的方案数) 又如 n=5 数组(5) (1,5) (1,2,5) (2,5) k=4 输入:N(不用判错) 输出:一个整数(不同方案数) 242、所谓丑数,就是那些因子只含2,3,5的数。1,2,3,4,5,6,8,9,10,12,15是最前面的11个丑数。为方便起见,将1也看作是丑数。 请编写一个程序寻找并打印第N个(N<=3000)个丑数。 输入:N 输出:The N'th ugly number is (其中N用输入数取代, 输出样例:The 11'th ugly number is 15. 243、找出N位自然数中(N<=8)具有下列性质的数:如果将这个数分为两部分,且位数相等,然后将这两部分相加,所得和的平方,等于原来那个数。从键盘输入N,输出符合性质的数,各数间用空格分隔。 244、字母组合 问题描述:字母A,B,C的所有可能的组合(按字典顺序排序)是:A,AB,ABC,AC,B,BC,C 每个组合都对应一个字典顺序的序号,如下所示: 1 A 2 AB 3 ABC 4 AC 5 B 6 BC 7 C 任务1:找出某个字母组合的字典序号。例如,AC的字典序号是4 任务2:找出该字母组合下的第N个字母组合。例如N=2,即AC的后N个字母组合为BC 输入:输入包括3行 第一行 N 表示字母组合由字母表中前N个字母组成 第二行 K 表示某一字母组合 第三行 M 表示要求输出前N个字母组成组合下的第个M字母组合 输出:输出包括2行 第一行 字母组合K的序号 第二行 第M个字母组合 输入样例:3 AB 6 输出样例:2 BC 245、字符串匹配问题 字符串中只含有括号 (),[],<>,{},判断输入的字符串中括号是否匹配。如果括号有互相包含的形式,从内到外必须是<>,(),[],{},例如。输入: [()] 输出:YES,而输入([]), ([])都应该输出NO 输入:文件的第一行为一个整数n,表示以下有多少个由括好组成的字符串。接下来的n行,每行都是一个由括号组成的长度不超过255的字符串。(input.txt) 输出:在输出文件中有N行,每行都是YES或NO。(output.txt) 246、寻找第K大数 一堆数有N个,我想从大到小排成一排,从中挑出第K大的那个数进行采样分析请你帮忙挑出来。 输入:输入文件的第一行为二个整数N和K,表示整数的个数(N,K<=10000),下面N行每行为一个整数,其值都在(-32768~32767)之间。(input.txt) 输出:输出文件只有一个数,为第K大整数(output.txt) 247、自然数的分解方案数 一个自然数可以写成若干个小于等于自己的自然之和,这叫该自然数的一个分解。不同的分解是表示这个自然数分解成的所有自然数不完全相同。 例如:3=2+1和3=1+1+1表示不同的分解。而3=2+1和3=1+2为相同的分解。 现在的任务是,给出一个自然数,要求所有不同的分解方案数。 输入:输入文件的只有一个自然数N,N<=10000。(input.txt) 输出:输出文件只有一个数,为N的分解方案数。(output.txt) 248、超级素数:一个n位超级素数是指一个n位正整数,它的前1位,前2位, . . . , 前n位均为素数,例如,7331是个4位超级素数,因为7,73,733,7331均为素数。由键盘输入n (n<9), 然后输出全部的n位超级素数。 249、问题描述:一个整数的整数字串是由该整数的连续数位的数字构成。程序名为例如:6158的子串包括6,1,5,8,61,15,58,615,158,6158 任务:找出最大的质数子串 输入:整数N(0<=N<=1000000000) 输出:N的最大质数子串,若所有子串都是非质数,则输出“No primes” 输入样例1: 2319 输出样例1: 31 输入样例2:6804 输出样例2:No primes 250、找出N位自然数中(N<=8)具有下列性质的数:如果将这个数分为两部分,且位数相等,然后将这两部分相加,所得和的平方,等于原来那个数。从键盘输入N,输出符合性质的数,各数间用空格分隔。 251、 我们知道,所谓的卡列列克运算,是指任意一个四位数,只要它们各个位上的数不全相同,就有这样的规律:程序名为step.pas 1. 把组成这个四位数的四个数字由大到小排列,形成由这四个数字构成的 最大的四位数; 2. 把组成这个四位数的四个数字由小到大排列,形成由这四个数字构成的 最小的四位数(如果四个数字中含有0,则此数不足四位); 3. 求出以上两数之差,得到一个新的四位数。 重复以上过程,总能得到最后结果是6174。 试编写一个程序,实现卡布列克运算,要求以下面的格式输出全部运算过程和结 果,统计需要运算的步数(如下例为3步)。 输出格式: 252、对于一个五位数a1a2a3a4a5,可将其拆分为三个子数: sub1=a1a2a3 sub2=a2a3a4 sub3=a3a4a5 例如,五位数20207可以拆分成 sub1=202 sub2=020(=20) sub3=207 现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1,sub2,sub3都可被K整除。 输入 输入由键盘输入,输入仅一行,为正整数K(0 6543-3456=3087 8730-378=8352 8532-2358=6174 SETP=3 输出 输出到文件,输出文件的每一行为一个满足条件的五位数,要求从小到大输出。不得重复输出或遗漏。如果无解,则输出“No”。 样例 num.in 15 num.out 22555 25555 28555 30000 253、溢出 over.pas 问题描述 写一个程序,读入两个非负整数及一个运算符号判断两整数及运算结果是否超出了PASCAL语言中关于长整数类型的定义。(长整数范围为-21474838到21474837) 输入文件 一行包含整数和运算符,运算符(‘+’,‘-’,‘*’,‘div’) 输出文件 先输出一遍原输入,并在后面输出0到3行适当内容, 如:first number is too big second number is too big result number is too big 例如: 输入 输出 300+3 300+3 300000*300000 300000*300000 result is too big 9999999999999999999+1 9999999999999999999+1 first number is too big result number is too big 建议用int来处理,范围大小是 (-9223372036854775808 .. 9223372036854775807 ) 254、请你编一程序实现两种不同进制之间的数据转换。 输入: 输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10则用大写字母A~F表示数码10~15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)。 输出: 输出仅一行,包含一个正整数,表示转换之后的m进制数。 样例: change.in 16 FF 2 change.out 11111111 255、阶乘问题 也许你早就知道阶乘的含义,N阶乘是由1到N相乘而产生,如: 12! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 = 479,001,600 12的阶乘最右边的非零位为6。 写一个程序,计算N(1<=N<=50,000,000)阶乘的最右边的非零位的值。 注意:10,000,000!有2499999个零。 输入 仅一行包含一个正整数N。 输出 单独一行包含一个整数表示最右边的非零位的值。 样例 fact.in 12 fact.out 6 256、4位数排列。 任给出4个非0的不同数字,求出由这4个数字组成的所有的4位数。 例如: 输入:3 2 1 6 输出:1 2 3 6 1 2 6 3 1 3 2 6 1 3 6 2 1 6 2 3 1 6 3 2 2 1 3 6 2 1 6 3 2 3 1 6 2 3 6 1 2 6 1 3 2 6 3 1 3 1 2 6 3 1 6 2 3 2 1 6 3 2 6 1 3 6 1 2 3 6 2 1 6 1 2 3 6 1 3 2 6 2 1 3 6 2 3 1 6 3 1 2 6 3 2 1 程序要求:从键盘输入4个不同的非0数字,列出由这4个数字组成的 所有4位数,每行输出6个。 257、圆环上求素数。 将0,1,2,……9共10个数排成一圈(如下图) ① 0 ⑨ ⑧ ⑦ ⑥ ⑤ ② ③ ④ 给出一个取数长度L(1<=L<=5),然后从1开始按顺时针方向连续取L个数字,拼成一个长为L位的数。此时共有9个长为L位的数,然后输出这9个数中的素数。 例如:L=2,此时9个长为L位的数为: 12,23,34,45,56,67,78,,90 其中素数有:23,67, 程序要求:输入:L 输出:全部满足条件的素数。如果没有则输出No 258、求分数和的最小值。 给出一个数字字符串,即字符串中的字符全部为数字,并以字符'$'结束(字符'$'本身不是数字符,仅作为结束符号)。 例如: '12$','2135$','312456$',…… 并设字符串的长度L<=8(包括'$')。 今将数字字符串分成三个部分(分法为任意的),例如: '312456$'可分为'3','124','56'; 或者'31','24','56',…… 从上例可看出,当数字串给出之后,分成三部分的分法是许多的(每一部分不能为空),对每一种分法,可以得到三个数和三个分数. 例如: 分法'3','124','56'对应的三个数为3,124,56 对应分数为:1/3,1/124,1/56。 分法'31','24','56'对应的三个数为31,24,56 对应分数为:1/31,1/24,1/56。 程序要求:从键盘输入一个数字串(以'$'作为结束符号)。找出一种分法,使得到的三个分数的和S为最小,输出S的值(精确到小数点后的第6位)。 若给出的数字串中,非0的字符少于3个,则此时不能组成三个数,输出一个'ERROR'。 例如:'12$','100100$'…… 259、最大最小差(MaxMin) 问题描述: 现在有N个正整数,每一次去掉其中2个数a和b,然后加入一个数a*b+1,这样最后只剩下一个数P。要求求出最大的P记为MaxP,最小的p记MinP,和他们的差K=MaxP-MinP。 对于给定的数列,编程计算出它的Max,Min和K。 输入文件(MAXMIN.IN): 第一行是数列的长度N(不超过50),以下N行,每行一个正整数(不超过2位)。 输出文件(MAXMIN.OUT): 输出一共三行,每行一个整数,依次为max,min,K。 输入输出样例: MAXMIN.IN MAXMIN.OUT 2 1 1 260、输入一个英文句子,例如:“This is a Book.\",可以看到句子是以“.”来作为结束符号的,并且单词之间以一个空格来分隔。接着再输入一个单词A,请找出首次在句子中出现的与A$相同的单词,是句子中的第几个单词,若不存在,则输出该句子中单词字符的总个数。 例如对上句子而言,若输入单词“is”,则应输出: 2 若输入单词“isa”,则应输出:11 261、我们将左右对称的自然数称为回文数,例如:121,4114等; 将只能被1与其本身整除的自然数称之为素数,例如:7,353等。 键入N,M,求出N至M(含N与M)之间既是回文数又是素数的自然数共有多少个? 2 2 0 262、现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他 是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … 3/1 3/2 3/3 … 4/1 4/2 … 5/1 … … 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … 3/1 3/2 3/3 … 4/1 4/2 … 5/1 … … 我们以Z字形给上表的每一项编号。 第1项是1/1,然后是1/2,2/1,3/1,2/2,... 输入:整数N(1<=N<=107) 输出:表中的第N项。 样例: INPUT N=7 OUT PUT 1/4 263、给出二个任意的正整数N,K(1<=N<=10000,0<=K (2)当剩余的数不够减时,则将其加上K,再重复(1)的操作过程。 (3)若剩余的数为0时,则结束操作并输出进行减法的次数。 (4)若存在永远不能减完的情况,则输出信息“ERROR!”。 例如:当N=4,K=2时,操作过程如下: 1)4-1=3 减2^0 2)3-2=1 减2^1 由于不够减,所以加K的值2,得:N=1+2=3 3)3-1=2 减2^0 4)2-2=0 减2^1 此时结果为0,则输出:STEP=4(表示进行了4次减法操作运算) 又如:当N=2,K=1时,操作过程如下: 1)2-1=1 减2^0 由于不够下次减,所以加K的值1,得:N=1+1=2 2)2-1=1 减2^0 ………… 在这种情况下,永远不能减完,则输出信息“ERROR!” 2、生日日期 ( Birthday ) 问题描述: 小甜甜的生日是YY年MM月DD日,他想知道自己出生后第一万天纪念日的日期(出生日算第0天)。 输入格式: 从文件的第一行分别读入YY,MM,DD其中1949<=YY<=2002,日期绝对合法。 输出格式: 输出文件只有一行,即小甜甜生日第一万天以后的日期,格式为 “YY-MM-DD”。 样例: BIRTHDAY.DAT 1975 7 15 BIRTHDAY.OUT 2002-11-30 265、 分解因式 ( Factor ) 问题描述: 一个自然数N的正因子个数记为F(N),例如18的所有正因子为1、2、3、6、9、18,所以F(18)=6。现在给出K,求所有满足F(N)=K的N中最小的数。 输入格式: 从文件读入数据,第一行为K,其中0 输出到文件第一行,如果存在不大于20000的解,则输出这个N,否则输出“NO SOLUTION”。 样例1: FACTOR.DAT 9 FACTOR.OUT 36 样例2: FACTOR.DAT 17 FACTOR.OUT NO SOLUTION 266、 K好数(K-Good Number) 问题描述: 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。给定K、L,求L位K好数的数目。 输入格式: 从文件读入数据,第一行为K、L,其中K<=16,L<=10。 输出格式: 将结果输出到 KGOOD.OUT 样例 KGOOD.DAT 4 2 KGOOD.OUT 7 267、Sramoc问题 ( Sramoc Problem ) 问题描述: Sramoc ( K , M ) 表示用数字0、1、2…、K-1组成的自然数中能被M整除的最小数。给定 K、M,求Sramoc ( K,M )。例如 K=2,M=7的时候,Sramoc( 2 , 7 ) = 1001。 输入格式: 从文件SRAMOC.DAT读入数据。第一行为两个整数K、M满足2<=K<=10、1<=M<=1000。 输出格式: 输出Sramoc(K,M) 到 SRAMOC.OUT。 样例 SRAMOC.DAT 2 7 SRAMOC.OUT 1001 268、 数位和与积 试编写程序求出自然数n的各个数位之和与之积。 输入:文件中的以此存放了若干个自然数 n(n<500000)。 输出:各行依次输出每一个自然数n的各个数位之和与之积。 例如: 输入 92 23 输出 11 18 5 6 269、顺序数串无穷小数 小明构造了一个无穷小数x=0.12345671011…99100101…,其中的数字是依次写下各自然数而得到的。试求出小数点后第m位数字。 输入:文件中每行有一个整数m( m<=20000)。 输出:输出文件中每行有一个数字,存放着小数点后第m位数字。 例如: 输入 4 15 输出 4 2 270、NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能。实验室将这个任务交给了一个刚进入的新手ZL先生。为了很好的完成这个任务,ZL先生首先研究了一些一元一次方程的实例: 4+3x=8 6a-5+1=2-2a -5+12y=0 ZL先生被主管告之,在计算器上键入的一个一元一次方程中,只包含整数、 小写字母及+、-、=这三个数学符号(当然,符号“─”既可作减号,也可作负号)。方程中并没有括号,也没有除号,方程中的字母表示未知数。 问题求解 编写程序,解输入的一元一次方程, 将解方程的结果(精确至小数点后三位)输出至屏幕。 你可假设对键入的方程的正确性的判断是由另一个程序员在做,或者说可认为键入的一元一次方程均为合法的,且有唯一实数解。 样 例 输入: 6a-5+1=2-2a 输出: a=0.750 271、任意给定一个自然数N,寻找一个M,要求M是N的倍数,且它的所有各位数字都是0或1组成,并要求M尽可能小 例如:输入 3 输出 3*37=111 输入 31 输出 31*3581=111011 272、由M个数组成环行,要求输出他们相邻的四个数的最大值和最少值 (输出第一行为最大值,第二行为最少值) 例如: 输入 5 1 2 3 4 5 输出: 14 10 273、方阵填数:在一个NN的方阵中,填入1,2,……NN个数,并要求构成如下的格式: 例: N=5 13 14 15 16 1 12 23 24 17 2 11 22 25 18 3 10 21 20 19 4 9 8 7 6 5 N=6 16 17 18 19 20 1 153****221214 29 36 33 22 3 132****423412 27 26 25 24 5 11 10 9 8 7 6 274、若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为A类数,否则就称其为B类数。 例如:(13)10=(1101)2 其中1的个数为3,0的个数为1,则称此数为A类数; (10)10=(1010)2 其中1的个数为2,0的个数也为2,称此数为B类数; (24)10=(11000)2 其中1的个数为2,0的个数为3,则称此数为B类数; 程序要求:求出1~n之中(包括1与1000),全部A、B两类数的个数。 例如:输入 1 输出A:1 B:0 275、问题描述: 给出n个整数x1,x2,x3,x4..xn,将这n个数从小到大排序为:A1,A2,A3,A4..AN,记数列A1,A2,A3,A4..AN的奇数项之和为P,偶数项之和为Q,令T=|P-Q| 求出T的值。 输入格式: 输入文件的第一行为整数N(1<=n<=50000)。 接下来的N行每行有一个整数,按顺序给出X1,X2,X3,..XN的值(|Xi|<=1000) 输出格式: 输出整数T的值。 输入样例: 3 1 3 2 输出样例: 2 276、破碎的项链 问题描述:你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的。 这里是 n=29 的二个例子: 1 2 1 2 r b b r b r r b r b b b r r b r r r w r b r w w b b r r b b b b b b r b r r b r b r r r b r r r r r r b r b r r r w 图片 A 图片 B r 代表 红色的珠子 b 代表 蓝色的珠子 w 代表 白色的珠子 第一和第二个珠子在图片中已经被作记号。 图片 A 中的项链可以用下面的字符串表示: brbrrrbbbrrrrrbrrbbrbbbbrrrrb. 假如你要在一些点打破项链,展开成一条直线,然后从一端开始收集同颜色的珠子直到你遇到一个不同的颜色珠子,在另一端做同样的事。(颜色可能与在这之前收集的不同) 确定应该在哪里打破项链来收集到最大多数的数目的子。 Example 举例来说,在图片 A 中的项链,可以收集到8个珠子,在珠子 9 和珠子 10 或珠子 24 和珠子 25 之间打断项链。 在一些项链中,包括白色的珠子如图片 B 所示。 当收集珠子的时候,一个被遇到的白色珠子可以被当做红色也可以被当做蓝色。 表现项链的字符串将会包括三符号 r , b 和 w 。 写一个程序来确定从一条被供应的项链最大可以被收集珠子数目。 PROGRAM NAME: beads INPUT FORMAT 第 1 行: 第 2 行: N, 珠子的数目 一串度为N的字符串, 每个字符是 r , b 或 w。 SAMPLE INPUT (file beads.in) 29 wwwbbrwrbrbrrbrbrwrwwrbwrwrrb OUTPUT FORMAT 单独的一行包含从被供应的项链可以被收集的珠子数目的最大值。 SAMPLE OUTPUT (file beads.out) 11 277、 骑士问题 问题描述: 在一个标准8*8的国际象棋棋盘上,棋盘中有些格子可能是有障碍物的。已知骑士的初始位置和目标位置,你的任务是计算出骑士最少需要多少步可以从初始位置到达目标位置。有障碍物的格子当然不可以到达。 标准的8*8的国际象棋棋盘中每一个格子可以用唯一的编号确定。行用1-8这个8个数字依次表示,列用’a’-‘h’这8个字母依次表示。例如左下图的骑士所在位置(图中有n的格子)的编号为“d4”(注意’d’和’4’之间没有空格) 我们知道国际象棋中的骑士可以按”L”路线移动(一个方向走2个格子接着垂直方向走1个格子)。因此,如左上图中的骑士(位于d4),可以到达位置c2,b3,b5,c6,e6,f5,f3和e2(图中有’x’标记的格子)。此外,骑士不能移出棋盘。 骑士可以按照移动规则自由地在棋盘上没有障碍物的格子中移动。右上图给出了一个骑士移动的例子。初始格子用’n’标记,目标格子用’N’标记,有障碍物的格子用’b’标记。一个可行的移动序列在图中用数字标记出来。(a1,b3,a5,c6,e5,g4,h2,f1)。总共需要7步才能完成。事实上,这也就是最小的步数了。 输入格式: 输入文件包括1个或多个测试数据。 每一个测试数据的第一行是一个整数b(-1<=b<=62),表示棋盘中有障碍物的格子数目。当b=-1时,输入文件结束。 第二行含b个不同的有障碍物的格子编号,用空格隔开。当b=0时,此行为空行。 第三行是骑士的初始格子和目标格子的编号,也是用空格隔开。初始格子和目标格子是不同的。且都没有障碍物。 输出格式: 对于每个数据,输出一行。格式:Board n: m moves 其中n表示数据的序号(从1开始)m表示骑士所用的最小的步数。 如果骑士无法到达目标格子,输出:Board n: not reachable 输入样例: 10 c1 d1 c5 c2 c3 c4 d2 d3 d4 d5 a1 f1 0 c1 b3 2 b3 c2 a1 b2 -1 输出样例: Board 1: 7 moves Board 2: 1 moves Board 3: not reachable 278、 集合删数 问题描述: 一个集合有如下元素:1是集合元素;若P是集合的元素,则2 * P +1,4*P+5 也是集合的元素,取出此集合中最小的K个元素,按从小到大的顺序组合成一个多位数,现要求从中删除M个数位上的数字,使得剩下的数字最大,编程输出删除前和删除后的多位数字。 注:不存在所有数被删除的情况` 输入格式: 输入的仅一行,K,M的值,K,M均小于等于30000。 输出格式: 输出为两行,第一行为删除前的数字,第二行为删除后的数字。 样例输入: 5 4 样例输出: 137915 279、乒乓球( Table.pas) 【问题背景】国际乒联现在沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中 11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白 11分制和 21分制对选手的不同影响。在开展他的研究之前,他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙。 【问题描述】华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在 11分制和 21分制下,双方的比赛结果(截至记录末尾)。 比如现在有这么一份记录,(其中 W表示华华获得一分, L表示华华对手获得一分): WWWWWWWWWWWWWWWWWWWWWWLW 在 11分制下,此时比赛的结果是华华第一局 11比 0获胜,第二局 11比 0获胜,正在进行第三局,当前比分 1比 1。而在 21分制下,此时比赛结果是华华第一局 21比 0获胜,正在进行第二局,比分 2比 1。如果一局比赛刚开始,则此时比分为 0比 0。 你的程序就是要对于一系列比赛信息的输入( WL形式),输出正确的结果。 【输入格式】每个输入文件包含若干行字符串(每行至多 20个字母),字符串有大写的 W、 L和 E组成。其中 E表示比赛信息结束,程序应该忽略 E之后的所有内容。 【输出格式】输出由两部分组成,每部分有若干行,每一行对应一局比赛的比分(按比赛信息输入顺序)。其中第一部分是 11分制下的结果,第二部分是 21分制下的结果,两部分之间由一个空行分隔。(注意,如果比分不差2分,那么就是要接着到,例如当比分是11:10时,此时比赛不应该结束,继续打,直到比分差2分假设打到22:20此时便可以停止) 【输入样例】 WWWWWWWWWWWWWWWWWWWW WWLWE 【输出样例】 11:0 11:0 1:1 21:0 2:1 280、不高兴的津津 【问题描述】 津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。 【输入文件】 输入文件unhappy.in包括七行数据,分别表示周一到周日的日程安排。每行包括两个小于10的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈 妈安排她上课的时间。 【输出文件】 输出文件unhappy.out包括一行,这一行只包含一个数字。如果不会不高兴则输出0,如果会则输出最不高兴的是周几(用1, 2, 3, 4, 5, 6, 7分别表示周一,周二,周三,周四,周五,周六,周日)。如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。 【样例输入】 5 3 6 2 7 2 5 3 5 4 0 4 0 6 【样例输出】 3 281、 花生采摘(peanuts.pas/dpr/c/cpp) 【问题描述】 鲁宾逊先生有一只宠物猴,名叫多多。这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!——熊字”。 鲁宾逊先生和多多都很开心,因为花生正是他们的最爱。在告示牌背后, 路边真的有一块花生田,花生植株整齐地排列成矩形网格(如图1)。有经验的多多一眼就能看出,每棵花生植株下的花生有多少。为了训练多多的算术,鲁宾逊先生说:“你先找出花生最多的植株,去采摘它的花生;然后再找出剩下的植株里花生最多的,去采摘它的花生;依此类推,不过你一定要在我限定的时间内回到路边。” 我们假定多多在每个单位时间内,可以做下列四件事情中的一件: 1) 从路边跳到最靠近路边(即第一行)的某棵花生植株; 2) 从一棵植株跳到前后左右与之相邻的另一棵植株; 3) 采摘一棵植株下的花生; 4) 从最靠近路边(即第一行)的某棵花生植株跳回路边。 现在给定一块花生田的大小和花生的分布,请问在限定时间内,多多最多可以采到多少个花生?注意可能只有部分植株下面长有花生,假设这些植株下的花生个数各不相同。 例如在图2所示的花生田里,只有位于(2, 5), (3, 7), (4, 2), (5, 4)的植株下长有花生,个数分别为13, 7, 15, 9。沿着图示的路线,多多在21个单位时间内,最多可以采到37个花生。 【输入文件】 输入文件peanuts.in的第一行包括三个整数,M, N和K,用空格隔开;表示花生田的大小为M * N(1 <= M, N <= 20),多多采花生的限定时间为K(0 <= K <= 1000)个单位时间。接下来的M行,每行包括N个非负整数,也用空格隔开;第i + 1行的第j个整数Pij(0 <= Pij <= 500)表示花生田里植株(i, j)下花生的数目,0表示该植株下没有花生。 【输出文件】 输出文件peanuts.out包括一行,这一行只包含一个整数,即在限定时间内,多多最多可以采到花生的个数。 【样例输入1】 6 7 21 0 0 0 0 0 0 0 0 0 0 0 13 0 0 0 0 0 0 0 0 7 0 15 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 【样例输出1】 37 【样例输入2】 6 7 20 0 0 0 0 0 0 0 0 0 0 0 13 0 0 0 0 0 0 0 0 7 0 15 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 【样例输出2】 28 282、 回文质数 因为151即是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 号是回文质数。 写一个程序来找出范围[a,b](5 <= a < b <= 100,000,000)间的所有回文质数; PROGRAM NAME: pprime INPUT FORMAT 第 1 行: 二个整数 a 和 b . SAMPLE INPUT (file pprime.in) 5 500 OUTPUT FORMAT 输出一个回文质数的列表,一行一个。 SAMPLE OUTPUT (file pprime.out) 5 7 11 101 131 151 181 191 313 353 373 383, 283、你要乘坐的飞碟在这里 一个众所周知的事实,在每一慧星后面是一个不明飞行物UFO。 这些不明飞行物时常来收集来自在地球上忠诚的支持者。 不幸地,他们的空间在每次旅行只能带上一群支持者。 他们要做的是用一种聪明的方案让每一个团体人被慧星带走。 他们为每个慧星起了一个名字,通过这些名字来决定一个团体是不是特定的慧星带走。 那个相配方案的细节在下面被给出; 你的工作要写一个程序来通过团体的名字和彗星的名字来决定一个组是否应该与在那一颗慧星后面的不明飞行物搭配。 团体的名字和慧星的名字都以下列各项方式转换成一个数字: 这个最后的数字代表名字中所有字母的信息,\"A\" 是 1 和 \"Z\" 是 26。 举例来说,团体 \"USACO\" 会是 21*19*1*3*15=17955 。 如果团体的数字 mod 47 等于慧星的数字 mod 47,那么你要告诉这个团体准备好被带走 ! 写一个程序读入慧星的名字和团体的名字,如果搭配打印\"GO\"否者打印\"STAY\" 团体的名字和慧星的名字将会是没有空格或标点的一串大写字母(不超过6个字母), Examples: Input Output COMETQ HVNGAT ABSTAR USACO STAY GO PROGRAM NAME: ride INPUT FORMAT 第 1 行: 彗星的名字(一个长度为1到6的字符串) 第 2 行: 团体的名字(一个长度为1到6的字符串) SAMPLE INPUT (file ride.in) COMETQ HVNGAT OUTPUT FORMAT 单独一行包含\"STAR\"或\"GO\". SAMPLE OUTPUT (file ride.out) GO 284、踩气球 每年的六月一号都是儿童节,电视上面都想往常一样都会有一个踩气球的节目,其实规则很简单:在地上放了100个标了数字的气球,即气球上分别标1到100的数字,裁判一声响,两个队员同时开始踩气球,开始每个人的分数都为1分,当他踩破几号球,便将他的分数乘以这个数字,如:甲第一个踩破了41号,乙第一个踩破了56号,他们的分数分别是41分和56分,以此类推。一分钟后,双方停止,其余没踩破的气球被拿走,最后看谁的分数最高便假定是胜者[--非最后确认的,只是暂时认为,假如“甲”为暂时的胜者--] 然而,这个结果没有被裁判确认前,先要进行一项活动,就是败者向胜者进行质问,如果发现胜者[甲]说的是假话,则乙胜利,如果胜者[甲]说的是真话,则甲胜利。 譬如,甲说他得了343分,乙说他得了49分,很显然,甲说谎话,因为343的因子只有1、7和49,而49的因子只有1、7、49,故他们踩了重复的球,而这是不可能的,故乙胜利。 但是,如果甲说他得了162分,乙得了81分,虽然162=81乘2,但是,2乘3乘27也可以得162分,故甲说得有可能是真话,故甲胜利。 顺便说一下,如果败者说了假话,则胜者胜利,无论他是否说了真话,譬如,甲说他得了10003分,而乙说他得了10001分,显然,两个人都说了假话,但是我们还是判定甲胜利。 不幸的是,在场的每个人都沉迷于激动人心的比赛,包括裁判没有谁能静下心来计算这么复杂的东西,故要求聪明的你来设计一个程序来判定谁赢得了最后的胜利。 测试数据 输入 343 49 3599 610 62 36 输出 49 610 62 285、输入包括4个部分 1.一部字典,至少有一个单词,最多有100个单词,一个一行 2.单独一行‘XXXXXX’表示字典结束 3.很多单词,一行一个 4.2.单独一行‘XXXXXX’表示输入单词结束 输出:每一个单词都对应输出,这个单词与字典中的某个单词的字母都匹配的单词(很拗口)。例如字典中有abcd,而给你的单词是dcba那么就把abcd输出。如果字典中没有任何的单词与给出的单词匹配的话,那么输出‘NOT A VALID WORD’。当输出完一个单词的全部匹配后,就输出一行‘******’表示结束。 Sample Input tarp given score refund only trap work earn
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- baoquwan.com 版权所有 湘ICP备2024080961号-7
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务