第七届蓝桥杯程序设计大赛题目及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七届省赛
1. 网友年龄
某君新认识一网友。当问及年龄时,他的网友说:“我的年龄是个2 位数,我比儿子大27 岁, 如果把我的年龄的两位数字交换位置,刚好就是我儿子的年龄”
请你计算:网友的年龄一共有多少种可能情况?
提示:30 岁就是其中一种可能哦.
请填写表示可能情况的种数。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
7
x-y=3
2. 生日蜡烛
某君从某年开始每年都举办一次生日party ,并且每次都要吹熄与年龄相同根数的蜡烛现在算起来,他一共吹熄了236 根蜡烛。
请问,他从多少岁开始过生日party 的?请填写他开始过生日party 的年龄数。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
26 #include
int main(){
int i,j;
int sum=0; for(i=1;i<=100;i++){ // 年龄
sum=0; for(j=i;j<=100;j++){ // 蜡烛数sum=sum+j;
if(sum==236){ cout<
break;
}
}
}
}
3. 方格填数
如下的10 个格子
填入0~9 的数字。要求:连续的两个数字不能相邻。 (左右、上下、对角都算相邻) 一共有多少种可能的填数方案?请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。// 用dfs 求
#include
const int maxn=4;
int mp[maxn][maxn];
int flag[10];
int ans=0;
int init() {
memset(mp,-10, sizeof mp); memset(flag,0, sizeof flag);
}
int fx[4]= {0,-1,-1,-1},fy[4]= {-1,-1,0,1};
int check(int i,int j) {
for(int f=0; f<4; f++) {
if(abs(mp[i][j]-mp[i+fx[f]][j+fy[f]])!=1||i+fx[f]<1||j+fy[f]>4||j+fy[f]<1 ) continue;
else
return 0;
}
return 1;
}
void dfs(int i,int j) {
if(i==3&&j==4) {
ans++;
return ;
}
for(int num=0; num<=9; num++) {
if(!flag[num]) { mp[i][j]=num; flag[num]=1; if(check(i,j)) if(j==4) dfs(i+1,1);
else
dfs(i,j+1); flag[num]=0;
}
}
}
int main() {
init();
dfs(1,2);
cout< } // 暴力求解 #include using namespace std; int ans=0; void swap(int *a,int *b) { int *c; c=a; a=b; b=c; } int f(int a[])// 判断这种排列组合是否符合题意{ if(a[0]-a[4]==-1||a[0]-a[4]==1) return 0; if(a[3]-a[4]==-1||a[3]-a[4]==1) return 0; if(a[5]-a[4]==-1||a[5]-a[4]==1) return 0; if(a[7]-a[4]==-1||a[7]-a[4]==1) return 0; if(a[8]-a[4]==-1||a[8]-a[4]==1) return 0; if(a[9]-a[4]==-1||a[9]-a[4]==1) return 0; if(a[1]-a[4]==-1||a[1]-a[4]==1) return 0; if(a[1]-a[5]==-1||a[1]-a[5]==1) return 0; if(a[1]-a[6]==-1||a[1]-a[6]==1) return 0; if(a[0]-a[5]==-1||a[0]-a[5]==1) return 0; if(a[2]-a[5]==-1||a[2]-a[5]==1) return 0; if(a[8]-a[5]==-1||a[8]-a[5]==1) return 0; if(a[9]-a[5]==-1||a[9]-a[5]==1) return 0; if(a[6]-a[5]==-1||a[6]-a[5]==1) return 0; if(a[6]-a[9]==-1||a[6]-a[9]==1) return 0; if(a[6]-a[2]==-1||a[6]-a[2]==1) return 0;