版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2024年全国青少年信息素养大赛C++算法创意实践挑战赛(小学组_复赛)真题(含答案)一、编程题。1.翻转数相乘。题目描述:假设一个n位数,如a1a2a3…an,其中ai是这个数的第i位上的数字,且这个n位数不是每个位都相等的数字,例如不是2222或类似。如果有一个整数x,并且1<x<10,使得a1a2a3…an*x=anan-1an-2…a1,求x,其中a1和an不能为0,如果x无解,则输出0,如果有多个x,则从小到大输出所有x的解,中间用空格隔开。例如:一个5位数,ABCDE*?=EDCBA,其中A、B、C、D、E是个位整数,ABCDE和EDCBA是一个万位数,求符合这个等式的乘数。输入格式:输入1个数,表示要求解的n位数。输出格式:输出表示所有可能的乘数,并按照从小到大排列,用回车隔开。样例输入:6样例输出:49注意事项:请严格按要求输出,不要多余的打印语句,例如:“输入x=…”等多余内容。本程序的代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意:main函数需要返回0。注意:只使用ANSIC/ANSIC++标准,不要调用依赖于编译环境或操作系统的特殊函数。注意:所有依赖的函数必须明确地在源文件中#include<xxx>,不能通过工程设置而省略常用头文件。参考程序:#include<iostream>#include<vector>#include<algorithm>#include<cmath>usingnamespacestd;//反转数字intreverseNumber(intnum,intn){intreversed=0;for(inti=0;i<n;i++){reversed=reversed*10+num%10;num/=10;}returnreversed;}//判断是否所有位都相同(如2222这种非法数字)boolisAllDigitsSame(intnum,intn){intd=num%10;for(inti=1;i<n;i++){num/=10;if(num%10!=d)returnfalse;}returntrue;}intmain(){intn;cin>>n;vector<int>ans;for(intx=2;x<=9;x++){intlow=pow(10,n-1);inthigh=pow(10,n)-1;for(intnum=low;num<=high;num++){intrev=reverseNumber(num,n);if(num*x==rev){//首位不能为0,且数字不能全相同if(!isAllDigitsSame(num,n)){ans.push_back(x);break;}}}}if(ans.empty()){cout<<0<<endl;}else{sort(ans.begin(),ans.end());for(intx:ans){cout<<x<<endl;}}return0;}2.吉利号码。题目描述:中国人喜欢图吉利,包括吉利数字,例如数字8或者数字6,尤其是连着的数字更加喜欢,比如手.机.号.码,汽车车牌,房间号码等等。有需求就会有市场,吉利数字的号码,往往意味着更贵的价格。请你根据以下规则,编写一个程序,根据规则给一个号码设置相应的价格。具体规则如下:(1)正常号码是100元。(2)含有:6,8任何一个数字,每出现一次加分。50元,例如4326,6875,9918都符合加分标准。其中,6875被加2个50元,就相当于加100元;9918被加50元。(3)如果出现升序或者降序的情况,不管升序还是降序,号码涨价3倍。例如:5678,4321都要贵3倍。注意:例如5567,4331等有相同元素的号码不算降序、升序。(4)如果出现三个相同数字情况,都涨6倍。例如:4888,6665,7777都满足加分的标准。注意:7777因为满足这条标准两次,所以这条规则给它涨两个6倍,也就是12倍。(5)如果符合AABB或者ABAB模式的,价格涨一倍。例如:2255,3939,7777都符合这个模式,所以都会涨价。注意:7777因为满足这条标准两次,所以这条标准给它涨2倍,同时7777也是连号,也会在之前连号的基础上继续涨价。请编写程序按照所有规则,求一个号码的最终价格!要求程序从标准输入接收数据,在标准输出上输出结果。输入格式:输入共1行,输入一个四位正整数,就是待计算的号码。输出格式:输出共1行,一个整数,表示这个号码对应的销售价格。样例输入:6543样例输出:450注意事项:请严格按要求输出,不要多余的打印语句,例如:“输入x=…”等多余内容。本程序的代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意:main函数需要返回0。注意:只使用ANSIC/ANSIC++标准,不要调用依赖于编译环境或操作系统的特殊函数。注意:所有依赖的函数必须明确地在源文件中#include<xxx>,不能通过工程设置而省略常用头文件。参考程序:#include<iostream>#include<vector>#include<algorithm>usingnamespacestd;intmain(){intnumber;cin>>number;//分解数字。intd1=number/1000;intd2=(number/100)%10;intd3=(number/10)%10;intd4=number%10;vector<int>digits={d1,d2,d3,d4};//初始价格。intprice=100;//规则1:吉利数字(6或8)。intlucky_count=0;for(intd:digits){if(d==6||d==8){lucky_count++;}}price+=lucky_count*50;//规则2:升序或降序连号。boolis_ascending=(d1<d2)&&(d2<d3)&&(d3<d4);boolis_descending=(d1>d2)&&(d2>d3)&&(d3>d4);if(is_ascending||is_descending){price*=3;}//规则3:三个相同数字。vector<int>counts(10,0);for(intd:digits){counts[d]++;}inttriple_count=0;for(intc:counts){if(c>=3){triple_count+=c/3;//处理如7777的情况。}}if(triple_count>0){price*=(6*triple_count);}//规则4:AABB或ABAB模式。boolis_aabb=(d1==d2)&&(d3==d4)&&(d1!=d3);boolis_abab=(d1==d3)&&(d2==d4)&&(d1!=d2);boolis_aaaa=(d1==d2)&&(d2==d3)&&(d3==d4);//如7777。intpattern_multiplier=1;if(is_aabb||is_abab){pattern_multiplier*=2;}if(is_aaaa){pattern_multiplier*=2;//如7777满足AABB两次。}price*=pattern_multiplier;cout<<price<<endl;return0;}3.将整数换成分数。题目描述:一个小于100万的正整数n,尝试把n变成带分数形式,也就是n=a+b/c,其中a,b,c是三个正整数,并且数字1~9(不含0)在a、b、c中,必须出现,且只能出现一次。例如:100=3+69258/714,其中1到9这9个数字全都出现了,并且只出现一次。当然,100还等于82+3546/197,也就是说将100变成带分数形式,会有两种组合方式。事实上100,可以写成11种1到9组成整数加上分数的形式。请编写一个程序,根据一个输入N,程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部可能性。不要求输出每个表示,只输出有多少种表示法!输入格式:输入一行,表示要分解的正整数。输出格式:输出一行,表示有多少分法。样例输入:100样例输出:11注意事项:请严格按要求输出,不要多余的打印语句,例如:“输入x=…”等多余内容。本程序的代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意:main函数需要返回0。注意:只使用ANSIC/ANSIC++标准,不要调用依赖于编译环境或操作系统的特殊函数。注意:所有依赖的函数必须明确地在源文件中#include<xxx>,不能通过工程设置而省略常用头文件。参考程序:#include<iostream>#include<vector>#include<algorithm>usingnamespacestd;intcount=0;voidcheck(intn,constvector<int>&digits){//尝试所有可能的分割方式。for(inta_len=1;a_len<=7;++a_len){for(intb_len=1;b_len<=8-a_len;++b_len){intc_len=9-a_len-b_len;if(c_len<1)continue;//构造a、b、c。inta=0;for(inti=0;i<a_len;++i){a=a*10+digits[i];}intb=0;for(inti=a_len;i<a_len+b_len;++i){b=b*10+digits[i];}intc=0;for(inti=a_len+b_len;i<9;++i){c=c*10+digits[i];}//检查是否满足n=a+b/c且b%c==0。if(c!=0&&b%c==0&&a+b/c==n){count++;}}}}voidpermute(intn,vector<int>&digits,intstart){if(start==digits.size()){check(n,digits);return;}for(inti=start;i<digits.size();++i){swap(digits[start],digits[i]);permute(n,digits,start+1);swap(digits[start],digits[i]);}}intmain(){intn;cin>>n;vector<int>digits={1,2,3,4,5,6,7,8,9};permute(n,digits,0);cout<<count<<endl;return0;}4.战胜白蚁。题目描述:小明因为很长时间没有回家,发现他家被白蚁给入侵了,白蚁特别喜欢啃食木头,因此他家的地板就遭殃了。小明要抢救被白蚁破坏的木地板,每个木地板由于白蚁的数量不同,每个地板进行维修的时间也不同,同时要争取及时修理越好,否则超过某个时间,这块地板就会被严重破坏掉。小明只能一块一块的清理白蚁,不能并行操作,也就是不能同时修多块地板。请编写一个程序,根据每个地板的修理时间和如果不修理就会被白蚁完全损毁的时间,进行一个最合理的排序,使得可以抢救最多的木板。输入是木板的数目,以及每个木板的维修时间和被破坏的时间,输出是能抢救的最多木板的数量。输入格式:第一行是一个整数N(N小于50000),接下来N行每行两个整数T1,T2描述一个要修理的木板:修理这个木板需要T1秒,如果在T2秒之内还没有修理完成,这个木板就报废了。输出格式:输出一个整数S,表示最多可以抢修S个木板。样例输入:410020020013001000125020003200样例输出:3注意事项:请严格按要求输出,不要多余的打印语句,例如:“输入x=…”等多余内容。本程序的代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意:main函数需要返回0。注意:只使用ANSIC/ANSIC++标准,不要调用依赖于编译环境或操作系统的特殊函数。注意:所有依赖的函数必须明确地在源文件中#include<xxx>,不能通过工程设置而省略常用头文件。参考程序:#include<iostream>#include<vector>#include<algorithm>usingnamespacestd;//木板结构体:存储每个木板的修理时间&报废时间structBoard{intrepairTime;//修理这块木板需要的时间intdeadline;//必须在这个时间之前修好,否则报废};//排序规则。//1.优先按报废时间从小到大排序//2.如果报废时间相同,按修理时间从小到大排序boolcompareBoards(constBoard&a,constBoard&b){if(a.deadline==b.deadlin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年航天分销产品设计协议
- 2026年会展营销培训服务协议
- 2026年云计算营销医疗信息化合同
- 村委会理事会工作制度
- 预检分诊消杀工作制度
- 预防青年犯罪工作制度
- 领导干部包片工作制度
- 食品安全临时工作制度
- 麻醉护士三种工作制度
- 巴彦淖尔盟磴口县2025-2026学年第二学期四年级语文期末考试卷(部编版含答案)
- 骨髓增生异常肿瘤诊断与治疗中国指南(2026年版)
- 有机液态储氢市场调研报告
- 感染科艾滋病患者护理措施
- 2026山东德州市宁津县招聘教师23人备考题库(各地真题)附答案详解
- 2026年病理学与病理生理学考研复试高频面试题包含详细解答
- 河北建设投资集团秋招面笔试题及答案
- 地勘单位奖惩制度
- 半月板损伤术后护理查房
- 环境应急响应与处置技术方案
- GB/T 46639.3-2025铸造机械术语第3部分:压铸机及其他永久型铸造设备
- 25秋国家开放大学《人文英语4》形考任务参考答案
评论
0/150
提交评论