2017年蓝桥杯省赛赛前集训题(共14题)
蓝桥杯练习系统题目汇总(K12教育文档)

(完整word版)蓝桥杯练习系统题目汇总(word版可编辑修改)编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整word版)蓝桥杯练习系统题目汇总(word版可编辑修改))的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整word版)蓝桥杯练习系统题目汇总(word版可编辑修改)的全部内容。
蓝桥杯练习系统题目汇总:入门训练1. Fibonacci数列问题描述Fibonacci数列的递推公式为:F n=F n—1+F n-2,其中F1=F2=1.当n比较大时,F n也非常大,现在我们想知道,F n除以10007的余数是多少。
输入格式输入包含一个整数n。
输出格式输出一行,包含一个整数,表示F n除以10007的余数.说明:在本题中,答案是要求F n除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出F n的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单.样例输入10样例输出55样例输入22样例输出7704数据规模与约定1 〈= n 〈= 1,000,000。
参考代码:c++1.#include〈stdlib.h〉2.#include<stdio。
h>3.#define MOD 100074.#define MAXN 10000015.int n,i, F[MAXN];6.int main()7.{8.scanf(”%d",&n);9.F[1]= 1;10.F[2]= 1;11.for(i = 3;i <= n;++i)12.F[i]= (F[i-1] + F[i-2])%MOD;13.printf(”%d\n”,F[n]);14.return0;15.}java:1.import java。
第六届蓝桥杯程序设计大赛题目及答案

第六届省赛1.方程整数解方程: a^2 + b^2 + c^2 = 1000(或参见【图1.jpg】)这个方程有整数解吗?有:a,b,c=6,8,30 就是一组解。
你能算出另一组合适的解吗?请填写该解中最小的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
10#include<stdio.h>int main(){int a,b,c;for(a=1;a*a<=1000;a++){for(b=1;b*b<=1000;b++){for(c=1;c*c<=1000;c++){if(a*a+b*b+c*c==1000){printf("%d %d %d\n",a,b,c);}}}}return 0;}2.星系炸弹在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。
请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。
比如:2015-02-19 请严格按照格式书写。
不能出现其它文字或符号。
2017-08-05#include <stdio.h>int main(){int monthDays[12]={31,28,31,30,31,30,31,31,30,31,30,31};int days=1000;int year=2014, month=11, day=9;int i;for(i=0;i<days;i++){day++;if(day>monthDays[month-1]){day=1;month++;if(month>12){month=1;year++;if((year%400==0) ||(year%4==0 && year%100!=0))monthDays[1]=29;elsemonthDays[1]=28;}}}printf("%d-%d-%d\n",year,month,day);getchar();return 0;}3.奇妙的数字小明发现了一个奇妙的数字。
数据结构竞赛题目集锦

数据结构竞赛题目集锦1.发现环(题目来源:2017蓝桥杯决赛)问题描述小明的实验室有N台电脑,编号1~N。
原本这N台电脑之间有N-1条数据链接相连,恰好构成一个树形网络。
在树形网络上,任意两台电脑之间有唯一的路径相连。
不过在最近一次维护网络时,管理员误操作使得某两台电脑之间增加了一条数据链接,于是网络中出现了环路。
环路上的电脑由于两两之间不再是只有一条路径,使得这些电脑上的数据传输出现了BUG。
为了恢复正常传输。
小明需要找到所有在环路上的电脑,你能帮助他吗?输入格式第一行包含一个整数N。
以下N行每行两个整数a和b,表示a和b之间有一条数据链接相连。
对于30%的数据,1 <= N <= 1000对于100%的数据, 1 <= N <= 100000, 1 <= a, b <= N输入保证合法。
输出格式按从小到大的顺序输出在环路上的电脑的编号,中间由一个空格分隔。
样例输入51 23 12 42 55 3样例输出1 2 3 52.小朋友排队(题目来源:第五届蓝桥杯预赛 C/C++本科B组)问题描述n 个小朋友站成一排。
现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。
每个小朋友都有一个不高兴的程度。
开始的时候,所有小朋友的不高兴程度都是0。
如果某个小朋友第一次被要求交换,则他的不高兴程度增加1,如果第二次要求他交换,则他的不高兴程度增加2(即不高兴程度为3),依次类推。
当要求某个小朋友第k次交换时,他的不高兴程度增加k。
请问,要让所有小朋友按从低到高排队,他们的不高兴程度之和最小是多少。
如果有两个小朋友身高一样,则他们谁站在谁前面是没有关系的。
输入格式输入的第一行包含一个整数n,表示小朋友的个数。
第二行包含 n 个整数H1 H2 … Hn,分别表示每个小朋友的身高。
输出格式输出一行,包含一个整数,表示小朋友的不高兴程度和的最小值。
样例输入 3 3 2 1 样例输出 93. 剪邮票(题目来源:2016年蓝桥杯) 问题描述如图1所示, 有12张连在一起的12生肖的邮票。
蓝桥杯Python集训课复习题一

蓝桥杯Python集训课复习题一选择题您的姓名: [填空题] *_________________________________1.从火星上看太阳运行轨迹呈什么形状?() [单选题] *A.“8”字形B.圆形C.泪珠形(正确答案)2. 2013年9月,英国科学家在南极冰下湖的泥浆里发现了哪种类型的生命迹象?() [单选题] *A.距今10万年的嗜极生物(正确答案)B. 距今12万年的嗜极生物C. 距今15万年的嗜极生物3.以下哪种动物和猛犸象的遗传基因最相似?() [单选题] *A. 亚洲象B.非洲象(正确答案)C.美洲象4.下列选项中,哪个地方最适合猛犸象生存?() [单选题] *A.西伯利亚(正确答案)B.阿拉斯加C.非洲荒野5.硼砂的一般形态是什么?() [单选题] *A.白色晶体的粉末(正确答案)B.白色晶体的小颗粒C.蓝色晶体的粉末6.捕蝇草的绝杀武器是什么?() [单选题] *A.叶面上的腺毛B. 叶片内的绒毛(正确答案)C. 颈部的囊7.木卫二的主体结构是什么?() [单选题] *A.碳酸钙岩石B.铝硅酸盐岩石C.硅酸盐岩石(正确答案)8.软泥放在哪里会很快变干发硬?() [单选题] *A.空气中(正确答案)B.密闭的玻璃容器中C.水中9.人的大脑通过什么保持时间感?() [单选题] *A.数自己的心跳(正确答案)B.数自己的脉搏C.无法保持10.蚊子依据什么寻找吸血目标?() [单选题] *A.人的体温B.人的血型C.二氧化碳.挥发性化学物质(正确答案)11.体型无比巨大的迷惑龙通常在开阔地区活动,那迷惑龙妈妈会在哪里筑巢产卵?() [单选题] *A.丛林(正确答案)B.平原C.沙漠12.以下哪种是萨米人的主要牲畜?() [单选题] *A.麋鹿B.驯鹿(正确答案)C.驼鹿13.小盗龙有几个翅膀?() [单选题] *A.没有B.2个C.4个(正确答案)14.海獭为什么揉脸?() [单选题] *A.无意识的动作B.清洁(正确答案)C.卖萌15.考拉的主要食物是:() [单选题] *A.橡树叶子B.榕树叶子C.桉树叶子(正确答案)16.鸟和蛋谁先出现的?() [单选题] *A.鸟B.蛋(正确答案)C.一起出现的17.驯鹿的迁徙信号由谁发起?() [单选题] *A.雄鹿B.雌鹿(正确答案)C.任何一只都行18.飞出太阳系的“旅行号”宇宙探测器是主要靠什么加速的?() [单选题] *A.天体的引力(正确答案)B.发射火箭的助推C.自身的推进器19.天王星表面那梦幻般的蓝色其来源是:() [单选题] *A.水B.液态氨C.甲烷(正确答案)20.热气球借助什么飘起来?() [单选题] *A.空气(正确答案)B.氦气C.氢气21.破冰船的破冰方式不包括?() [单选题] *A.连续式破冰法B.冲撞式破冰法C.摩擦式破冰法(正确答案)22.下列关于仙女座星系和银河系之间的关系的叙述,正确的是?() [单选题] *A.仙女座星系在绕着银河系以25000千米/小时的速度做圆周运动。
蓝桥杯集训题(C语言)

蓝桥杯集训题(C语言)1.难度:中有个时候需要比较精确的算一个除法。
如果两个数,mn输入结果,确保可以留存小数点后100十一位。
例如输出18输出0.125输入197输出2.7142857142857(后一百位)提示:用浮点型是行不通的想其他办法2难道:中排列组合:组合基本性质有:1.c(m,n)=c(m-n,n)2.c(0,n)=13.c(m,n+1)=c(m,n)+c(m-1,n);4.c(1,n)=n输入两个数xy(>0)表示c(x,y)求c(x,y);输入36输出20提示信息:建议运用递回思想,当m<=n/2时,用1展开化简。
3.难度:易得出一个由o和x共同组成的串(长度为1~80),统计数据罚球。
每个o的些分成目前已连续发生的o的个数,x的些分成0.比如ooxxoxxooo的些分成1+2+0+0+1+0+0+1+2+34.难度:易输出n个单词,统计数据单词个数输出helloword输出2输入iloveyou输入35.难度:易输出mn输入行n列于的矩阵(规则在样例中)输出23输入145236输出34输出1671225811349106.难度:较难排列(permutation)用1,2,3.....9共同组成3个三位数abc,def和ghi,每个数字恰好采用一次,建议abc:def:ghi=1:2:3.按照\defghi\的格式输出说有解。
7.难度:容易给出n和n个整数,和k(1<=k<=n),输出这些整数重小到大的第k个(例k=1时就是最小值)。
n<=10^7;提示信息:恳请先全盘掌控快速排序。
本题貌似直观,其实不然。
最难想起的方法就是先排序,然后轻易输入第k个数,但10^7的规模即使采用快速排序(o(sn))的算法来说也很大。
可以在快速排序的“分割“完结后,数组a[p……r]被分为了a[p……q]和a[q+1……r],,则可以根据左边的元素个数q-p+1和k的大小关系只在左边或者右边递回解。
(完整word版)蓝桥杯集训讲题

一、选择题(单选题,每空50 分)第一题(难度系数 1)以下哪个程序可以实现:在 EV3 主机屏幕上显示“Hello!"字样,并保持 5 秒钟后结束程序?A:A错误的原因,我们知道如果选用循环模块,循环的内容必须是要放在循环模块的内部,才可以B:B错误的原因,显示模块的程序在显示屏上显示可能只需要几毫秒,但是我们人的眼睛是看不见,因为图像的信息,在眼睛里停留的时间特别短,程序可以运行但是我们看不见.C:C错误的原因和B相似,只循环五次,时间依旧很短,人眼无法看见D:以下是显示模块的具体介绍,请小朋友们仔细观看第二题(难度系数 3)以下哪个程序可以实现:“将颜色传感器测量的反射光强度数值实时显示在 EV3 主机屏幕上”?A:B:题目要求是实时监测,这里是当小于50的情况与题目不符C:这里用了颜色传感器的“颜色”模式,不是“反射光线强度”模式D:以上程序均不能。
颜色传感器可以检测进入传感器正面小窗口的光线的颜色或强度。
颜色传感器可以在三种不同模式下使用:“颜色”模式、“反射光线强度”模式和“环境光强度"模式“反射光线强度"模式在“反射光线强度”模式中,颜色传感器会检测进入传感器的光线的强度。
光线的强度测量为从 0 至 100 的百分比,其中 0 表示非常暗,100 表示非常亮。
当颜色传感器处于“反射光线强度”模式时,传感器正面的红色 LED 指示灯会开启。
如果传感器接近于物体或表面,则此红色光线会从物体上反射,然后进入要检测的传感器。
可以使用此方法测量表面或物体上的颜色阴影,因为较暗颜色阴影会将较少红色光线反射回传感器。
“环境光强度”模式在“环境光强度”模式中,与“反射光线强度"模式一样,颜色传感器会检测进入传感器的光线的强度.光线的强度测量为从0 至 100 的百分比,其中 0 表示非常暗,100 表示非常亮。
在“环境光强度"模式中,传感器正面的蓝色 LED 指示灯会微弱开启。
蓝桥杯VIP试题以及答案解析

//首先声明这并不是本人原创,只不不过本人想总结出来方便大家,全为C++代码。
1.结点选择问题描述有一棵 n 个节点的树,树上每个节点都有一个正整数权值。
如果一个点被选择了,那么在树上和它相邻的点都不能被选择。
求选出的点的权值和最大是多少?解题思路:这题模型是树形动态规划入门题目,dp[i][0]表示该节点不被选择,dp[i][1]表示该结点被选择。
转移方程为:dp[u][1]+=dp[v][0];//选择了u结点,则与它邻接的结点不选;dp[u][0]+=max(dp[v][0],dp[v][1]);不选择u结点,则与它邻接的结点选择结果最大的;应该特别注意:该题结点数量较大,应该选用邻接表存储边的关系1.#include<cstdio>2.#include<cstring>3.#define max(a,b) ((a)>(b)?(a):(b))4.#define maxn 1000105.bool vis[maxn];6.int dp[maxn][2];7.int father[maxn];8.int head[maxn];9.int n;10.int cnt;11.struct Edge12.{13.int to,next;14.}edge[2*maxn];15.void add(int u,int v)16.{17. edge[cnt].to=v;18. edge[cnt].next=head[u];19. head[u]=cnt++;20.}21.void treedp(int u)22.{23. vis[u]=1;24.for(int i=head[u];i!=-1;i=edge[i].next)25. {26.int v=edge[i].to;27.if(!vis[v])28. {29. treedp(v);30. dp[u][1]+=dp[v][0];31. dp[u][0]+=max(dp[v][1],dp[v][0]);32. }33. }34.}35.void init()36.{37. cnt=0;38. memset(dp,0,sizeof(dp));39. memset(father,0,sizeof(father));40. memset(vis,0,sizeof(vis));41. memset(head,-1,sizeof(head));42.}43.int main()44.{45. init();46. scanf("%d",&n);47.for(int i=1;i<=n;i++)48. scanf("%d",&dp[i][1]);49.int root=0;50.int begin=1;51.for(int i=0;i<n-1;i++)52. {53.int a,b;54. scanf("%d%d",&a,&b);55. add(a,b);56. add(b,a);57. father[b]=a;58.if(root==b||begin)59. {60. root=a;61. }62. }63.64.while(father[root])65. root=father[root];66. treedp(root);67.int ans;68. ans=max(dp[root][0],dp[root][1]);69. printf("%d\n",ans);70.}2.K好数问题描述如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。
java蓝桥杯历年真题及答案整理(小结)

java蓝桥杯历年真题及答案整理(⼩结)蓝桥杯java历年真题及答案整理(闭关⼀个⽉,呕⼼沥⾎整理出来的)1 全排列是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。
如:给定 A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA⼀共3!=3*2=6种情况。
package Question1_9;import java.util.Scanner;import java.util.Vector;public class Question1 {public static long count=0;private void fullPermutation(Vector<Character>sourse, Vector<Character> result) {if(sourse.size()==0){for (int i = 0; i < result.size(); i++) {System.out.print(result.elementAt(i));}System.out.print("\n");count++;return;}for (int i = 0; i < sourse.size(); i++) {Vector<Character>tsourse=new Vector<Character>(sourse);Vector<Character>tresult=new Vector<Character>(result);tresult.add(sourse.elementAt(i));tsourse.remove(i);new Question1().fullPermutation(tsourse, tresult);}}public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int n=scanner.nextInt();Vector<Character> sourse=new Vector<Character>();Vector<Character> result=new Vector<Character>();for (int i = 0; i < n; i++) {sourse.add((char)('A'+i));}new Question1().fullPermutation(sourse, result);System.out.println(Question1.count);}}2串的简单处理串的处理在实际的开发⼯作中,对字符串的处理是最常见的编程任务。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2017年蓝桥杯省赛赛前集训题(共14题)第1题:星系炸弹(2015年省赛C/C++B组第2题)在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。
请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。
比如:2015-02-19请严格按照格式书写。
不能出现其它文字或符号。
•结果:2017-08-05•解决方法:用Excel拖这个题会了的同学们把上课讲过的,课件上的,其他几道Excel拖动题都做一遍。
第2题:(2015年校内选拔赛C/C++B组第3题)如果x的x次幂结果为10(参见【图1.png】),你能计算出x的近似值吗?显然,这个值是介于2和3之间的一个数字。
请把x的值计算到小数后6位(四舍五入),并填写这个小数值。
注意:只填写一个小数,不要写任何多余的符号或说明。
答案:14解法1:next_permutation的解法#include<iostream>#include<algorithm>using namespace std;int main(){int p[15]={1,1,1,1,1,2,2,2,2,2,2,2,2,2,2};//1是店,2是花int sum,cnt=0;do{sum=2;for(int i=0;i<15;i++)if(p[i]==1)sum<<=1;else if(p[i]==2)sum--;if(sum==0) cnt++;}while(next_permutation(p,p+14));//因为最后一次遇到的肯定是花,所以只排前14个数,不排最后一个cout<<cnt;return 0;}解法2:交换大法解法#include <iostream>using namespace std;#define N 14//因为最后一次肯定是花,所以只排14个数int cnt;bool ok(int p[],int begin,int end){for (int i = begin; i < end; i++)if (p[i] == p[end])return false;return true;}void perms(int p[],int start){int i;if(start==N-1)int sum=2;for(i=0;i<N;i++)if(p[i]==1)sum<<=1;else if(p[i]==2)sum--;if(sum==1) cnt++;//倒数第2次,剩1斗酒return;}for(i=start;i<N;i++){if (ok(p, start, i)){swap(p[start],p[i]);perms(p,start+1);swap(p[start],p[i]);}}}int main(){int p[]={1,1,1,1,1,2,2,2,2,2,2,2,2,2};//1是店,2是花perms(p,0);cout<<cnt;return 0;}解法3:字符串全排列的解法#include<iostream>#include<algorithm>using namespace std;int main(){string s = "aaaaabbbbbbbbb";//a是店,b是花int sum,cnt=0;do{sum=2;for(int i=0;i<15;i++)if(s[i]=='a')sum<<=1;else if(s[i]=='b')sum--;if(sum==1) cnt++;while(next_permutation(s.begin(),s.end()));cout<<cnt;return 0;}解法4:递归解法#include<iostream>using namespace std;int cnt=0;void f(int a,int b,int c)//a个店,b朵花,c升酒{if(a>5||b>9) return;f(a+1,b,c*2);f(a,b+1,c-1);if(a==5&&b==9&&c==1)cnt++;}int main(){f(0,0,2);cout<<cnt<<endl;}第4题(逻辑推理题)练习系统ADV-143 扶老奶奶过街•一共有5个红领巾,编号分别为A、B、C、D、E,老奶奶被他们其中一个扶过了马路。
五个红领巾各自说话:A :我和E都没有扶老奶奶B :老奶奶是被C和E其中一个扶过大街的C :老奶奶是被我和D其中一个扶过大街的D :B和C都没有扶老奶奶过街E :我没有扶老奶奶已知五个红领巾中有且只有2个人说的是真话,请问是谁扶这老奶奶过了街?若有多个答案,在一行中输出,编号之间用空格隔开例如A B C D E(这显然不是正确答案)解法1--位运算#include <iostream>using namespace std;#define N 5int main(){int i,j,t,a[N];for (i = 0x10; i >0; i>>=1){t=i;for (j = N-1; j >= 0; j--){a[j] = t & 1;t>>=1;}//ABCDE5个变量存5个人的真假话状态,1为真话,0为假话int A=(a[0]+a[4]==0);//A :我和E都没有扶老奶奶int B=(a[2]+a[4]==1);//B :老奶奶是被C和E其中一个扶过大街的int C=(a[2]+a[3]==1);//C :老奶奶是被我和D其中一个扶过大街的int D=(a[1]+a[2]==0);//D :B和C都没有扶老奶奶过街int E=(a[4]==0);//E :我没有扶老奶奶if(A+B+C+D+E==2)//5个人有且只有2个人说的是真话{for (j = 0; j < N; j++){if(a[j]) cout<<char('A'+j)<<' ';}}}return 0;}解法2-全排列#include<iostream>#include<algorithm>using namespace std;#define N 5int main(){int a[N]={1,0,0,0,0};//1扶了。
0没扶。
do{//ABCDE5个变量存5个人的真假话状态,1为真话,0为假话int A=(a[0]+a[4]==0);//A :我和E都没有扶老奶奶int B=(a[2]+a[4]==1);//B :老奶奶是被C和E其中一个扶过大街的int C=(a[2]+a[3]==1);//C :老奶奶是被我和D其中一个扶过大街的int D=(a[1]+a[2]==0);//D :B和C都没有扶老奶奶过街int E=(a[4]==0);//E :我没有扶老奶奶if(A+B+C+D+E==2)//5个人有且只有2个人说的是真话{for (int i = 0; i < N; i++){if(a[i]) cout<<char('A'+i)<<' ';}}}while(prev_permutation(a,a+N));return 0;}解法3-递归(大材小用了)#include<iostream>using namespace std;#define N 5int a[N];//1扶了。
0没扶。
void f(int k){int i;if(k==N){int sum=0;for(i=0;i<N;i++)sum+=a[i];if(sum==1)//只有一个人扶了{//ABCDE5个变量存5个人的真假话状态,1为真话,0为假话int A=(a[0]+a[4]==0);//A :我和E都没有扶老奶奶int B=(a[2]+a[4]==1);//B :老奶奶是被C和E其中一个扶过大街的int C=(a[2]+a[3]==1);//C :老奶奶是被我和D其中一个扶过大街的int D=(a[1]+a[2]==0);//D :B和C都没有扶老奶奶过街int E=(a[4]==0);//E :我没有扶老奶奶if(A+B+C+D+E==2)//5个人有且只有2个人说的是真话{for (i = 0; i < N; i++){if(a[i]) cout<<char('A'+i)<<' ';}}}return;}for(i=1;i>=0;i--){a[k]=i;f(k+1);}}int main(){f(0);return 0;}第5题:牌型种数(2015年省赛C/C++B组第7题)•小明被劫持到X赌城,被迫与其他3人玩牌。
•一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
•这时,小明脑子里突然冒出一个问题:•如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?答案: 3598180•解法1:暴力法,比较慢,5秒左右出答案,但不容易出错#include <iostream>using namespace std;int main(){int a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13;//13种点数int cnt=0;for(a1=0;a1<=4;a1++)for(a2=0;a2<=4;a2++)for(a3=0;a3<=4;a3++)for(a4=0;a4<=4;a4++)for(a5=0;a5<=4;a5++)for(a6=0;a6<=4;a6++)for(a7=0;a7<=4;a7++)for(a8=0;a8<=4;a8++)for(a9=0;a9<=4;a9++)for(a10=0;a10<=4;a10++)for(a11=0;a11<=4;a11++)for(a12=0;a12<=4;a12++)for(a13=0;a13<=4;a13++){if(a1+a2+a3+a4+a5+a6+a7+a8+a9+a10+a11+a12+a13==13)cnt++;}cout<<cnt;return 0;}解法2:DFS+剪枝,秒杀#include <iostream>using namespace std;int cnt=0;void f(int sum,int n){int i;if(sum>13||(13-n)*4+sum<13||n>13) return;//剪枝if(sum==13){cnt++;return;}for(i=0;i<=4;i++){f(sum+i,n+1);}}int main(){f(0,0);cout<<cnt;return 0;}第6题:单位分数(组合问题)(2015年校内选拔赛C/C++B组第6题)•形如:1/a 的分数称为单位分数。