2014 第六届蓝桥杯校内赛解题报告 答案

注意:只填写一个小数,不要写任何多余的符号或说明。答案:2.506184代码:

#include <cstdio>

#include <cmath>

int main() {

double x=2.4;

for(;x<3;x+=0.00000001){

if(fabs(pow(x,x)-10.0)<0.000001){

printf("%.8lf\n",x);

}

}

return 0;

}这题考的就是精度的控制,需要注意的是小数点最后几位别弄错了,多输出几位小数看看,至于方法,我这里用的是暴力穷举了,有更好的方法是咱高数大神想出来的,穷举确实慢,但这也是足够出答案了,反正这题是结果填空,至于好的方法,我提个名字,牛顿迭代法,还有更高级的牛顿下山法,想要代码的去找大神吧o(≧v≦)o~~,代码也不长,只需30次以内的运算就能出结果,赞呐~~~~4.

今有7对数字:两个1,两个2,两个3,…两个7,把它们排成一行。

要求,两个1间有1个其它数字,两个2间有2个其它数字,以此类推,两个7之间有7个其它数字。如下就是一个符合要求的排列:

17126425374635

当然,如果把它倒过来,也是符合要求的。

请你找出另一种符合要求的排列法,并且这个排列法是以74开头的。

注意:只填写这个14位的整数,不能填写任何多余的内容,比如说明注释等。

答案:74151643752362代码:

#include<stdio.h>

#include<string.h>

#include<algorithm>

using namespace std;

char per[15]="74112243735566";

bool p[14];

int main()

{

int i;

do

{

if(per[1]!=’4′) break;

memset(p,0,sizeof(p));

for(i=0;i<14;i++)

{

if(!p[i])

{

if(per[i]==per[i+per[i]-47])

p[i]=p[i+per[i]-47]=1;

else break;

}

}

if(i==14) puts(per);

}while(next_permutation(per+2,per+14));

}

这题又是一大悲剧,考试的时候忘了全排列函数,忘了算法头文件,通过目录搜索也是醉了,最后感觉没时间就先放放,没想到回过头来真没时间做这题了T_T,好多大神直接手算就解决出来了,不过代码也很快很短,特别是用上stl的全排列一下就出来了。悲剧!!5.

勾股定理,西方称为毕达哥拉斯定理,它所对应的三角形现在称为:直角三角形。

已知直角三角形的斜边是某个整数,并且要求另外两条边也必须是整数。

求满足这个条件的不同直角三角形的个数。

【数据格式】

输入一个整数 n (0<n<10000000) 表示直角三角形斜边的长度。

要求输出一个整数,表示满足条件的直角三角形个数。

例如,输入:

5

程序应该输出:

1

再例如,输入:

100

程序应该输出:

2

再例如,输入:

3

程序应该输出:

0

资源约定:

峰值内存消耗 < 256M

CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意: main函数需要返回0

注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。

注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

代码:

#include <cstdio>

#include <cmath>

int main() {

long long aa,bb,cc;

int a,b,c,ans=0;

scanf("%d",&c);

cc=c*c;

for(a=1;a<c/sqrt(2);a++){

aa=a*a;

b=sqrt(cc-aa);

if(b*b+aa==cc)ans++;

}

printf("%d",ans);

return 0;

}

也是很简单的水题,不过要注意的是平方之后容易超出int的范围,用上longlong,最好不要用double,double在判等的时候精度问题容易错。暴力的时候穷举到 c/sqrt(2)就行了,也是一个优化点。6.

你一定听说过“数独”游戏。

如【图1.png】,玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个同色九宫内的数字均含1-9,不重复。

数独的答案都是唯一的,所以,多个解也称为无解。

本图的数字据说是芬兰数学家花了3个月的时间设计出来的较难的题目。但对会使用计算机编程的你来说,恐怕易如反掌了。

本题的要求就是输入数独题目,程序输出数独的唯一解。我们保证所有已知数据的格式都是合法的,并且题目有唯一的解。

格式要求,输入9行,每行9个数字,0代表未知,其它数字为已知。

输出9行,每行9个数字表示数独的解。

例如:

输入(即图中题目):

005300000

800000020

070010500

400005300

010070006

003200080

060500009

004000030

000009700

程序应该输出:

145327698

839654127

672918543

496185372

218473956

753296481

367542819

984761235

521839764

再例如,输入:

800000000

003600000

070090200

050007000

000045700

000100030

001000068

008500010

090000400

程序应该输出:

812753649

943682175

675491283

154237896

369845721

287169534

521974368

438526917

796318452

资源约定:

峰值内存消耗 < 256M

CPU消耗 < 2000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意: main函数需要返回0

注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。

注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

代码:

#include <cstdio>

#include <string.h>

int a[9][9],row[9][10],col[9][10],g[10][10];

void fun(int x,int y){

if(x==9&&y==0){

for(int i=0;i<9;i++){

for(int j=0;j<9;j++){

printf("%d ",a[i][j]);

}

puts("");

}

}

if(a[x][y]!=0){

if(y==8){

fun(x+1,0);

}

else

fun(x,y+1);

}else

for(int i=1;i<=9;i++){

if(row[x][i]==1||col[y][i]==1||g[(x)/3*3+(y)/3][i]==1)

continue;

a[x][y]=i;

row[x][i]=1;

col[y][i]=1;

g[(x)/3*3+(y)/3][i]=1;

if(y==8)

fun(x+1,0);

else

fun(x,y+1);

row[x][i]=0;

col[y][i]=0;

g[(x)/3*3+(y)/3][i]=0;

a[x][y]=0;

}

}

int main() {

int n;

scanf("%d",&n);

for(int i=0;i<9;i++){

for(int j=0;j<9;j++){

scanf("%1d",&a[i][j]);

if(a[i][j]!=0){

row[i][a[i][j]]=1;

col[j][a[i][j]]=1;

g[(i)/3*3+(j)/3][a[i][j]]=1;

}

}

}

fun(0,0);

return 0;

留下许多叫知识和情感的东西握在手里。

2014 第六届蓝桥杯校内赛解题报告 答案

相关文章:

你感兴趣的文章:

标签云: