蓝桥杯练习题库基础练习之VIP题

蓝桥杯练习题库基础练习之VIP题
蓝桥杯练习题库基础练习之VIP题

蓝桥杯练习题库-基础练习之VIP题

————————————————————————————————作者: ————————————————————————————————日期:

?

基础练习阶乘计算

时间限制:1.0s 内存限制:512.0MB

查看参考代码

锦囊1

数组。

锦囊2

使用数组来保存一个整数,按手算的方法处理。

问题描述

输入一个正整数n,输出n!的值。

其中n!=1*2*3*…*n。

算法描述

n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。

将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。?首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。

输入格式

输入包含一个正整数n,n<=1000。

输出格式

输出n!的准确值。

样例输入

10

样例输出

本题的C参考代码如下:

#include <stdio.h>

#define N 10000

int main()

{

?int a[N]={1};

int k=0,l=1,n;

?inti,j;

scanf("%d",&n);

?for(i=1;i<=n;i++)

{

?for(j=0;j<l;j++)

?{

?a[j]=a[j]*i+k;

k=a[j]/10000;

??a[j]=a[j]%10000;

??}

?if(k)

?{

??a[j]=k;

?l++;

??k=0;

}

?}

?printf("%d",a[l-1]);

?for(i=l-2;i>=0;i--)

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

?printf("\n");

return 0;

}

基础练习高精度加法

时间限制:1.0s 内存限制:512.0MB

查看参考代码

锦囊1

数组。

锦囊2

使用数组来保存一个整数,按手算的方法处理。

问题描述

输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。

算法描述

由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。

定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。?计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的个位数存入C[0],即C[0]等于(A[0]+B[0])%10。然后计算A[1]与B[1]相加,这时还应将低位进上来的值r也加起来,即C[1]应该是A[1]、B[1]和r三个数的和.如果又有进位产生,则仍可将新的进位存入到r中,和的个位存到C[1]中。依此类推,即可求出C的所有位。

最后将C输出即可。

输入格式

输入包括两行,第一行为一个非负整数a,第二行为一个非负整数b。两个整数都不超过100位,两数的最高位都不是0。

输出格式

输出一行,表示a + b的值。

样例输入

20122

2890?

样例输出

211233454668012

#include

#include

#include

voidf(char a[],charb[])

{

int w=200,i,j,la,lb;

la=strlen(a);lb=strlen(b);

?char c[200];

?for(i=la;i<w;i++)a[i]=48;

?for(i=lb;i

a[w-1]=0;b[w-1]=0;

?for(i=0;i

?for(i=0;i<w-1-la;i++)a[i]=48;j=0;

?for(i=w-1-la;i

for(i=0;i<lb;i++)c[i]=b[i];

?for(i=0;i

?for(i=w-1-lb;i

?for(i=w;i>=0;i--)

?{

?j=a[i]+b[i]-96;

if(j>9)a[i-1]=a[i-1]+j/10;

c[i]=j%10+48;

}

c[w-1]=0;

?for(i=0;i

for(;i

}

intmain()

chara[200],b[200];gets(a);gets(b);

f(a,b);

return0;

}

基础练习 Huffuman树

时间限制:1.0s 内存限制:512.0MB

查看参考代码

锦囊1

贪心算法。

锦囊2

按题目要求处理即可。

问题描述

Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。?给出一列数{pi}={p0, p1, …, p n-1},用这列数构造Huffman树的过程如下:1 ?.找到{p i}中最小的两个数,设为pa和p b,将pa和pb从{pi}中删除掉,然后将它们的和加入到{pi}中。这个过程的费用记为p a+p b。

2. 重复步骤1,直到{p i}中只剩下一个数。?在上面的操作过程中,把所有的费用相加,就得到了构造Huffman树的总费用。?本题任务:对于给定的一个数列,现在请你求出用该数列构造Huffman树的总费用。

?例如,对于数列{p i}={5, 3, 8, 2, 9},Huffman树的构造过程如下: 1.找到{5,3, 8, 2, 9}中最小的两个数,分别是2和3,从{p i}中删除它们并将和5加入,得到{5, 8, 9, 5},费用为5。

2.找到{5, 8, 9,5}中最小的两个数,分别是5和5,从{p i}中删除它们并将和10加入,得到{8, 9, 10},费用为10。

3. 找到{8, 9, 10}中最小的两个数,分别是8和9,从{pi}中删除它们并将和17加入,得到{10,17},费用为17。

4. 找到{10, 17}中最小的两个数,分别是10和17,从{p i}中删除它们并将和27加入,得到{27},费用为27。

5. 现在,数列中只剩下一个数27,构造过程结束,总费用为5+10+17+27=59。

输入格式

输入的第一行包含一个正整数n(n<=100)。?接下来是n个正整数,表示p0, p1, …, p n-1,每个数不超过1000。

输出格式

输出用这些数构造Huffman树的总费用。

样例输入

5?5 3 8 2 9

样例输出

59

#include <stdio.h>

typedef struct

inta[100];

?int len;

}huf;

intsum=0;

int del(huf*in,int t)

?int i,j;

for(i=0;ilen-1;i++)

?in->a[i]=in->a[i+1];

?in->len--;

return1;

}

intadd(huf*in,int t)

{

in->a[in->len]=t;

in->len++;

}

int find_two_mins(huf*in)

{

?int i,j,t;

?int mina,minb;

?for(i=0;i<in->len-1;i++)

?for(j=i+1;jlen;j++)

?if(in->a[i]>in->a[j])

??{

?t=in->a[i];

???in->a[i]=in->a[j];

???in->a[j]=t;

}

mina=in->a[0];

minb=in->a[1];

?del(in,mina);

del(in,minb);

add(in,mina+minb);

return mina+minb;

}

int main()

{

huf in;

?int i,j,n;

scanf("%d",&n);

?in.len=n;

for(i=0;i

??scanf("%d",&in.a[i]);

?while(1)

{

?if(in.len==2)

?{

sum=sum+in.a[0]+in.a[1];

??break;

?}

sum+=find_two_mins(&in);

}

printf("%d",sum);

return0;

}

#include

#include

usingnamespace std;

priority_queue<int, vector<int>,greater<int> >pq;//构造从小到大的优先队列

intmain(){

int n;

cin >> n;

while (!pq.empty())

pq.pop();

int x, s;

for(inti = 0;i

cin >> x;

pq.push(x);

}

intsum = 0;

while (pq.size()> 1){

s=pq.top();

pq.pop();

s+=pq.top();

pq.pop();

sum+= s;

pq.push(s);

}

cout << sum <

基础练习2n皇后问题

时间限制:1.0s 内存限制:512.0MB

查看参考代码

锦囊1

搜索算法。

锦囊2

先搜索n皇后的解,在拼凑成2n皇后的解。

问题描述

给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。问总共有多少种放法?n小于等于8。

输入格式

输入的第一行为一个整数n,表示棋盘的大小。?接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置可以放皇后,如果一个整数为0,表示对应的位置不可以放皇后。

输出格式

输出一个整数,表示总共有多少种放法。

样例输入

4?1 1 1 1?1 1 1 1?11 11

111 1

样例输出

2

样例输入

1011

1 1 11

1 1 1 1?1 1 1 1

样例输出

#include<stdio.h>

int a[9][9],n,sum;

int row1[9],diagl1[17],diagr1[17],row2[9],diagl2[17],diagr2[17];

void dfs2(int i)

{

int j;

?if(i==n+1)

?{

sum++;

??return;

}

?for(j=1;j<=n;j++)

??{

??if(a[i][j]==1&&row2[j]!=0&&diagl2[n-i+j]!=0&&diagr2[i+j]!=0) ??{

???a[i][j]=0;

??row2[j]=0;

???diagl2[n-i+j]=0;

??diagr2[i+j]=0;

?dfs2(i+1);

??row2[j]=1;

?diagl2[n-i+j]=1;

???diagr2[i+j]=1;

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

??}

}

}

voiddfs1(inti)

{

?intj,h,r;

if(i==n+1)

?{

??for(h=1,r=1;r<=n;r++)

???if(a[1][r]==1)

????{

??a[1][r]=0;

???row2[r]=0;

??diagl2[n-h+r]=0;

???diagr2[h+r]=0;

?dfs2(h+1);

?row2[r]=1;

????diagl2[n-h+r]=1;

?????diagr2[h+r]=1;

?????a[1][r]=1;

????}

??}

?}

for(j=1;j<=n;j++)

?{

??if(a[i][j]==1&&row1[j]!=0&&diagl1[n-i+j]!=0&&diagr1[i+j]!=0)??{

???a[i][j]=0;

???row1[j]=0;

?diagl1[n-i+j]=0;

??diagr1[i+j]=0;

???dfs1(i+1);

???row1[j]=1;

???diagl1[n-i+j]=1;

?diagr1[i+j]=1;

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

}

?}

}

int main()

{

inti,j;

while(scanf("%d",&n)!=EOF)

?{

?sum=0;

?for(i=1;i<=n;i++)

?for(j=1;j<=n;j++)

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

??for(i=1;i<=n;i++)

?row1[i]=row2[i]=1;

for(i=1;i<=2*n;i++)

?diagl1[i]=diagr1[i]=diagl2[i]=diagr2[i]=1;?for(i=1,j=1;j<=n;j++)

??{

??if(a[1][j]==1)

???{

?a[1][j]=0;

????row1[j]=0;

??diagl1[n-i+j]=0;

??diagr1[i+j]=0;

??dfs1(i+1);

?row1[j]=1;

???diagl1[n-i+j]=1;

??diagr1[i+j]=1;

??a[1][j]=1;

???}

?}

??printf("%d\n",sum);

}

?return0;

}

#include

using namespace std;

intn;

intsum;

bool g[9][9];

bool wh[9];

bool wd[17];

bool wu[17];

bool bh[9];

bool bd[17];

bool bu[17];

void white(int h){

if(h==n){

??sum++;

}else{

??for(int i=0;i

?if(!g[h][i])continue;

??if(wh[i])continue;

???if(wd[i+h])continue;

?if(wu[(i-h)+n])continue;

???wh[i]=wd[i+h]=wu[(i-h)+n]=1;

?white(h+1);?

??wh[i]=wd[i+h]=wu[(i-h)+n]=0; ??}

}

}

void black(int h){

if(h==n){

?white(0);

?}else{

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

?if(!g[h][i])continue;

??if(bh[i])continue;

??if(bd[i+h])continue;

??if(bu[(i-h)+n])continue;

?g[h][i]=0;

?bh[i]=bd[i+h]=bu[(i-h)+n]=1;???black(h+1);??

??g[h][i]=1;

???bh[i]=bd[i+h]=bu[(i-h)+n]=0;

?}

}

}

int main(){

?int i;

int x;

sum=0;

scanf("%d",&n);

?for(i=0;i

wh[i]=bh[i]=0;

?wd[i]=bd[i]=0;

?wu[i]=bu[i]=0;

?for(intj=0;j

scanf("%d",&x);

??g[i][j]=(bool)x;

?}

}

for(;i<2*n;i++){

?wd[i]=bd[i]=0;

?wu[i]=bu[i]=0;

}

black(0);

?printf("%d\n",sum);

return0;

基础练习报时助手

时间限制:1.0s 内存限制:512.0MB

查看参考代码

锦囊1

判断,字符串输出。

锦囊2

按要求输出,判断特殊情况。

问题描述

给定当前的时间,请用英文的读法将它读出来。?时间用时h和分m表示,在英文的读法中,读一个时间的方法是:

如果m为0,则将时读出来,然后加上“o'clock”,如3:00读作“three o'clock”。?如果m不为0,则将时读出来,然后将分读出来,如5:30读作“fivethirty”。?时和分的读法使用的是英文数字的读法,其中0~20读作:?0:zero, 1: one, 2:two, 3:three, 4:four, 5:five, 6:six,7:seven, 8:eight, 9:nine, 10:ten, 11:eleven,12:t

welve, 13:thirteen, 14:fourteen, 15:fifteen, 16:sixteen, 17:seventeen, 18:eighteen, 19:nineteen, 20:twenty。

30读作thirty,40读作forty,50读作fifty。?对于大于20小于60的数字,首先读整十的数,然后再加上个位数。如31首先读30再加1的读法,读作“thirty one”。?按上面的

规则21:54读作“twenty one fifty four”,9:07读作“nine seven”,0:15读作“zero fifteen”。

输入格式

输入包含两个非负整数h和m,表示时间的时和分。非零的数字前没有前导0。h小于24,m小于60。

输出格式

输出时间时刻的英文。

样例输入

015

样例输出

zero fifteen

#include<stdio.h>

#include<string.h>

int main()

{

int h,m;

charg[50][50]={"zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty"};

?char s[10][10]={"twenty","thirty","forty","fifty"};

?scanf("%d%d",&h,&m);

?if(m==0)if(h<21)printf("%s o'clock",g[h]);else {printf("%s%so'clock",s[h/10-2],g[h%10]);}

else{

?if(h<21)printf("%s",g[h]);else{printf("%s %s",s[h/10-2],g[h%10]);} ?if(m<21)printf("%s",g[m]);else{printf("%s%s ",s[m/10-2],g[m%10]);}

}

?printf("\n");

return0;

#include <iostream>

#include <string>

#include

using namespacestd;

int main(int argc, char**argv)

{

?map<int,string> maptime;

?maptime[0]="zero";

maptime[1]="one";

maptime[2]="two";

maptime[3]="three";

maptime[4]="four";

?maptime[5]="five";

maptime[6]="six";

maptime[7]="seven";

maptime[8]="eight";

?maptime[9]="nine";

?maptime[10]="ten";

?maptime[11]="eleven";

?maptime[12]="twelve";

maptime[13]="thirteen";

maptime[14]="fourteen";

?maptime[15]="fifteen";

maptime[16]="sixteen";

?maptime[17]="seventeen";

maptime[18]="eighteen";

maptime[19]="nineteen";

?maptime[20]="twenty";

?maptime[30]="thirty";

maptime[40]="forty";

?maptime[50]="fifty";

int h,m;

cin>>h>>m;

if(m==0)

?{

?if(h<=20)

??{

??cout<<maptime[h]<<" o'clock";

?else

?{

?cout<

}

?else

?if(h<=20)

cout<

?}

else

{

?cout<

?}

if(m<=20)

?{

cout<

?}

?else

?{

?int k=m%10;

?cout<

??}

?}

return 0;

}

基础练习回形取数

时间限制:1.0s 内存限制:512.0MB

查看参考代码

锦囊1

循环,标记。

锦囊2

使用多次循环来处理,也可以对取过的数标记来简化循环的判断。

问题描述

回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。

输入格式

输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。

输出格式

输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。

样例输入

123?4 5 6

33?

7 89

样例输出

1 4 7 89 6 3

2 5

样例输入

3 2

1 2?

56

34?

样例输出

1 3 5 6 4 2

#include<stdio.h>

#include

#defineMAX_N 200

int m,n;

int a[MAX_N][MAX_N],b[MAX_N][MAX_N]; int s=0;

void solve(int i,int j)

{

?if(i<m&&i>=0 && j=0&&b[i][j] == 0) ?{

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

b[i][j]= 1;

?

else

??s++;

return;

}

?if(s%4==0)

?solve(i+1,j);

?if(s%4== 1)

solve(i,j+1);

?if(s%4== 2)

?solve(i-1,j);

if(s%4 ==3)

solve(i,j-1);

if(s%4 ==0)

?solve(i+1,j);

?if(s%4 ==1)

?solve(i,j+1);

if(s%4 ==2)

solve(i-1,j);

if(s%4==3)

solve(i,j-1);

?return ;

int main()

{

memset(b,0,sizeof(b));

?scanf("%d%d",&m,&n);

?int i,j;

?for(i=0; i

?for(j=0; j

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

solve(0,0);

puts("");

?return0;

基础练习龟兔赛跑预测

时间限制:1.0s 内存限制:512.0MB

查看参考代码

锦囊1

模拟。

锦囊2

按照问题描述模拟比赛过程。

问题描述

话说这个世界上有各种各样的兔子和乌龟,但是研究发现,所有的兔子和乌龟都有一个共同的特点——喜欢赛跑。于是世界上各个角落都不断在发生着乌龟和兔子的比赛,小华对此很感兴趣,于是决定研究不同兔子和乌龟的赛跑。他发现,兔子虽然跑比乌龟快,但它们有众所周知的毛病——骄傲且懒惰,于是在与乌龟的比赛中,一旦任一秒结束后兔子发现自己领先t米或以上,它们就会停下来休息s秒。对于不同的兔子,t,s的数值是不同的,但是所有的乌龟却是一致——它们不到终点决不停止。

然而有些比赛相当漫长,全程观看会耗费大量时间,而小华发现只要在每场比赛开始后记录下兔子和乌龟的数据——兔子的速度v1(表示每秒兔子能跑v1米),乌龟的速度v2,以及兔子对应的t,s 值,以及赛道的长度l——就能预测出比赛的结果。但是小华很懒,不想通过手工计算推测出比赛的结果,于是他找到了你——清华大学计算机系的高才生——请求帮助,请你写一个程序,对于输入的一场比赛的数据v1,v2,t,s,l,预测该场比赛的结果。

输入格式

输入只有一行,包含用空格隔开的五个正整数v1,v2,t,s,l,其中(v1,v2<=100;t<=300;s<=10;l<=10000且为v1,v2的公倍数)

输出格式

输出包含两行,第一行输出比赛结果——一个大写字母“T”或“R”或“D”,分别表示乌龟获胜,

兔子获胜,或者两者同时到达终点。

第二行输出一个正整数,表示获胜者(或者双方同时)到达终点所耗费的时间(秒数)。

样例输入

10 5 52 20

样例输出

D

4

样例输入

10 55 1 20

样例输出

R

3

样例输入

10 5 5 3 20

样例输出

T

4

#include

intmain()

{

int v1,v2,t,s,l,s1=0,s2=0,i=0;

scanf("%d %d%d %d%d",&v1,&v2,&t,&s,&l);

while(s1

?{

?s1+=v1;

s2+=v2;

?i++;

??if(s1==l||s2==l)break;

if(s1-s2>=t)s1-=v1*s;

}

if(s1>s2) printf("R\n");

?else if(s2>s1) printf("T\n");

?else ?printf("D\n");

?printf("%d",i);

return 0;

}

基础练习芯片测试

时间限制:1.0s 内存限制:512.0MB

查看参考代码

锦囊1

找出统计规律。

锦囊2

每列求和,总数大于一半为真,少于一半为假。

问题描述

有n(2≤n≤20)块芯片,有好有坏,已知好芯片比坏芯片多。?每个芯片都能用来测试其他芯片。用好芯片测试其他芯片时,能正确给出被测试芯片是好还是坏。而用坏芯片测试其他芯片时,

会随机给出好或是坏的测试结果(即此结果与被测试芯片实际的好坏无关)。?给出所有芯片的测试结果,问哪些芯片是好芯片。

输入格式

输入数据第一行为一个整数n,表示芯片个数。?第二行到第n+1行为n*n的一张表,每行n 个数据。表中的每个数据为0或1,在这n行中的第i行第j列(1≤i, j≤n)的数据表示用第i块芯片测试第j块芯片时得到的测试结果,1表示好,0表示坏,i=j时一律为1(并不表示该芯片对本身的测试结果。芯片不能对本身进行测试)。

输出格式

按从小到大的顺序输出所有好芯片的编号

样例输入

3?1 0 1?0 1 0

1 01

样例输出

1 3

#include<stdio.h>

#include<string.h>

int main()

int a[50][50];inti,j,n,s;scanf("%d",&n);

?for(j=0;j

for(j=0;jn/2.0)printf("%d ",j+1);}

?return 0;

}

#include

#include

#include<cstring>

using namespace std;

boola[25][25];

bool v[25];

intn;

booldfs(intk)

{

if (k==n)

{

int sum=0;

for (inti=1;i<=n;i++)

蓝桥杯c c 省赛试题及答案解析

2016蓝桥杯c-c++B组省赛试题及解析 第一题 煤球数目 有一堆煤球,堆成三角棱锥形。具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有多少个煤球? 请填表示煤球总数目的数字。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

答案:171700 #include<> int main() { int a[101] ={0}; for(int i = 1 ; i < 101 ; i ++) a[i] = a[i-1] + i; int ans = 0; for(int j = 1 ; j < 101 ; j ++) ans += a[j]; printf("%d\n",ans); return 0; }

第二题 生日蜡烛 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。 现在算起来,他一共吹熄了236根蜡烛。 请问,他从多少岁开始过生日party的? 请填写他开始过生日party的年龄数。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 答案:26 #include<> int main()

{ int start,end; for(start = 1 ; start < 236 ; start ++) { for( end = start ; end < 236 ; end ++ ) { int sum = 0; for(int i = start; i <= end; i ++) sum += i; if( sum == 236) { printf("start : %d end : %d\n",start,end); } } }

2018蓝桥杯试题

2018蓝桥杯C语言b组国赛真题 1.标题:换零钞 x星球的钞票的面额只有:100元,5元,2元,1元,共4种。 小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱。 小明有点强迫症,他坚持要求200元换出的零钞中2元的张数刚好是1元的张数的10倍, 剩下的当然都是5元面额的。 银行的工作人员有点为难,你能帮助算出:在满足小明要求的前提下,最少要换给他多少张钞票吗? (5元,2元,1元面额的必须都有,不能是0) 注意,需要提交的是一个整数,不要填写任何多余的内容。 手算都可以。。。下面是代码,答案74 1.#include https://www.360docs.net/doc/ac18062749.html,ing namespace std; 3.int main(){ 4.for(int i=1;i<40;i++){ 5.for(int j=1;j<200;j++){ 6.if(5*i+2*10*j+1*j==200) 7. cout<<"5*"<

13. 2.标题:激光样式 14.x星球的盛大节日为增加气氛,用30台机光器一字排开,向太空中打 出光柱。 15.安装调试的时候才发现,不知什么原因,相邻的两台激光器不能同时打 开! 16.国王很想知道,在目前这种bug存在的情况下,一共能打出多少种激 光效果? 17.显然,如果只有3台机器,一共可以成5种样式,即: 18.全都关上(sorry, 此时无声胜有声,这也算一种) 19.开一台,共3种 20.开两台,只1种 21.30台就不好算了,国王只好请你帮忙了。 22.要求提交一个整数,表示30台激光器能形成的样式种数。 23.注意,只提交一个整数,不要填写任何多余的内容。 思路很简单,暴力搜索,30个灯光从左到右,从左边第一个开始,第一个可以开关,第二个要根据左边的灯光是否开启来取值,以此类推。。。答案2178309 1.#include 2.#include https://www.360docs.net/doc/ac18062749.html,ing namespace std; 4.int ans = 0; 5.int x[31];//0代表关,1代表开 6. 7.void dfs(int index){ 8.if(index == 30){ 9.ans++; 10.return; 11.}

蓝桥杯Java试题

1. 历届试题核桃的数量 问题描述 小张是软件项目经理,他带领3个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。他的要求是: 1. 各组的核桃数量必须相同 2. 各组内必须能平分核桃(当然是不能打碎的) 3. 尽量提供满足1,2条件的最小数量(节约闹革命嘛)输入格式 输入包含三个正整数a, b, c,表示每个组正在加班的人数,用空格分开(a,b,c<30) 输出格式 输出一个正整数,表示每袋核桃的数量。 样例输入1 2 4 5 样例输出1 20

样例输入2 3 1 1 样例输出2 3 JAVA 源代码 1import java.util.Scanner; 2public class Main { 3 4public static void main(String[] args){ 5 Scanner sc=new Scanner(System.in); 6int a=sc.nextInt(); 7int b=sc.nextInt(); 8int c=sc.nextInt(); 9int i; 10for(i=1;;i++){ 11if(i%a==0&&i%b==0&&i%c==0) 12 13break; 14 } 15 System.out.println(i); 16 }} 2.基础练习Sine之舞 时间限制:1.0s 内存限制:512.0MB 问题描述 最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学

好这门课,必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。 不妨设 An=sin(1–sin(2+sin(3–sin(4+...sin(n))...) Sn=(...(A1+n)A2+n-1)A3+...+2)An+1 FJ想让奶牛们计算Sn的值,请你帮助FJ打印出Sn的完整表达式,以方便奶牛们做题。 输入格式 仅有一个数:N<201。 输出格式 请输出相应的表达式Sn,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。 样例输入 3 样例输出 ((sin(1)+3)sin(1–sin(2))+2)sin(1–sin(2+sin( 3)))+1 语言JAVA 源代码17import java.util.Scanner; 18public class Main { 19private static int m; 20public static void main(String[] args){ 21 Scanner sc=new Scanner(System.in); 22 m=sc.nextInt(); 23for(int i=0;i

蓝桥杯哦2010第一届大赛试题

第一题,以下函数的功能是将任意整数进行因式分解, 请完成该程序的空缺使函数能够正常运算 void f(int n) { for(int i=2; i1) printf(“%d\n”, n); } 第二题,以下函数的功能是将给定字符串进行倒序输出,请完成该函数空缺部分。 char* p = “abcdef”; char* q = (char*)malloc(strlen(p)+1); for(int i=0, int len=strlen(p); i

第三题,(这题的题目到底是要干啥,本人到现在沿未明了,数学学统计好,但可以确定原题给出的代码就是如此) int f(int m, int n) { int a = 1; int m1 = m; //—–(3)—- a *= m1–; int b = 1; while(n>1) b *= n–; return a / b; } 第四题,任意给出一个四位数, 把它重新组成一个四位的最大数和一个最小数, 算出两者间的差。 例如:3721这个数,可以重组成:7321和1237,相数之差为7321-1237 请完善下面这个函数,以实现此功能 int f(int n) { int N[4]; for(int i=0; i<4; i++) { N[3-i] = n % 10;

第五届蓝桥杯计算比赛省赛真题

标题:武功秘籍 小明到X山洞探险,捡到一本有破损的武功秘籍(2000多页!当然是伪造的)。他注意到:书的第10页和第11页在同一张纸上,但第11页和第12页不在同一张纸上。 小明只想练习该书的第81页到第92页的武功,又不想带着整本书。请问他至少要撕下多少张纸带走? 这是个整数,请通过浏览器提交该数字,不要填写任何多余的内容。 标题:等额本金 小明从银行贷款3万元。约定分24个月,以等额本金方式还款。 这种还款方式就是把贷款额度等分到24个月。每个月除了要还固定的本金外,还要还贷款余额在一个月中产生的利息。 假设月利率是:0.005,即:千分之五。那么, 第一个月,小明要还本金1250, 还要还利息:30000 * 0.005,总计1400.00 第二个月,本金仍然要还1250, 但利息为:(30000-1250) * 0.005 总计1393.75 请问:小明在第15个月,应该还款多少(本金和利息的总和)? 请把答案金额四舍五入后,保留两位小数。注意:32.5,一定要写为:32.50 通过浏览器提交答案,这是一个含有小数点和两位小数的浮点数字。不要写多余内容(例如:多写了“元”或添加说明文字) 标题:猜字母 把abcd...s共19个字母组成的序列重复拼接106次,得到长度为2014的串。 接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。 得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。 答案是一个小写字母,请通过浏览器提交答案。不要填写任何多余的内容。 标题:大衍数列 中国古代文献中,曾记载过“大衍数列”, 主要用于解释中国传统文化中的太极衍生原理。 它的前几项是:0、2、4、8、12、18、24、32、40、50 ... 其规律是:对偶数项,是序号平方再除2,奇数项,是序号平方减1再除2。 以下的代码打印出了大衍数列的前100 项。 int main() { int i; for(i=1; i<100; i++){ if(__________________) //填空 printf("%d ", i*i/2); else printf("%d ", (i*i-1)/2); }

蓝桥杯(客观题)练习题

1.AT89系列单片机提供了两种省电方式:分别是__空闲模式_____和 ___掉电模式______。 2.远距离传输通常应采用__串行______通信。 3.MCS-51单片机有5个中断源,2个优先级,上电复位时,__外部中 断0______中断源优先级级别最高。 4.MCS-51单片机的堆栈区只可设置在_____片内RAM ____(器),堆 栈寄存器SP是____8___位寄存器。 5.MCS-51单片机外部中断请求信号有_电平方式________和脉冲方式, 在电平方式下,当采集到INT0、INT1的有效信号为___低电平______时,激活外部中断。 6.访问89C51片外数据存储器采用的是__寄存器间接_____寻址方式。 7.进行BCD码运算时,只需要在ADD和ADDC后面紧跟一条__DA __A____指令即可。 8.计算机(微处理器)能够直接识别并执行的语言是_机器语言______。 9.十六进制数D/A转换为十进制数是___218 _____,二进制数 10110110转换为十六进制数是__B6______。 10.键盘工作方式有三种,分别是__编程扫描______、___定时扫描 ______和中断扫描方式。 11.A/D转换的基本功能是把___模拟量______变成数字量。 12.溢出标志OV只有在进行___符号数______加法运算时才有意 义,OV=0表示加法运算结果__正确_____,OV=1表示加法运算结果超出了_________所能表达的符号数有效范围。

13.MCS51单片机的外部中断信号请求信号若设定为电平方式,只 有在中断请求引脚上采样到有效的___低电子______信号时,才能激活外部中断,而在脉冲方式时,只有在中断请求引脚上采样到脉冲的____后沿负跳_____有效信号时,才能激活外中断。 14.MCS51单片机的一个机器周期包含了___6______个状态周期, 每个状态周期又可划分为___2______拍节,一个机器周期实际又包含了______12___个震荡周期。 15.PCON寄存器中与串行通信有关的只有D7位(SMOD),该位为 波特率信增位。当SMOD=___1______时,串行口波特率增加1倍,当SMOD=_____0____时,串行口波特率为设定值。 16.外围的扩展芯片的选择方法有两种方式,它们分别是___线选法 ______和_____译码法____。 17.定时器的计数方式是对来自T0,T1引脚的脉冲计数,输入的 外部脉冲在___负跳变______时有效,计数器加1,定时功能也是通过计数器计数来实现的,定时功能下的计数脉冲来自单片机内部的____时针_____电路。 18.MCS-51单片机片内共有____128_____字节单元的RAM。 19.若MCS-51单片机的程序状态字PSW中的RSI,RS0=11,那么, 工作寄存器R0~R7的直接地址为__18H-1FH_______。 20.I/O编址技术有____独立编址_____和____统一编址_____两种方式。 21.I/O数据传送的控制方式有___中断驱动方式______,程序查询方 式和____通道控制方式_____。

蓝桥杯第一届初赛题目

第一届蓝桥杯预赛试题 c 本科 第一题,以下函数的功能是将任意整数进行因式分解, 请完成该程序的空缺使函数能够正常运算 void f(int n) { for(int i=2; i1) printf(“%d\n”, n); } 第二题,以下函数的功能是将给定字符串进行倒序输出,请完成该函数空缺部分。 char* p = “abcdef”; char* q = (char*)malloc(strlen(p)+1); for(int i=0, int len=strlen(p); i

q__1__ = p[i+1]; q[len-1] = p[0]; —–(2)—-; prin tf(“%s\n”, q); 第三题, int f(int m, int n) { int a = 1; int m1 = m; //—–(3)—- a *= m1–; int b = 1; while(n>1) b *= n–; return a / b; } 第四题,任意给出一个四位数, 把它重新组成一个四位的最大数和一个最小数, 算出两者间的差。 例如:3721这个数,可以重组成:7321和1237,相数之差为7321-1237 请完善下面这个函数,以实现此功能 int f(int n) { int N[4];

for(int i=0; i<4; i++) { N[3-i] = n % 10; —-(4)—- } for(i=0; i<3; i++) for(int j=0; j<3-i; j++) if(N[j]>N[j+1]) { int t = N[j+1]; N[j+1] = N[j]; N[j] = t; } int n_min=0; for(i=0; i<4; i++) n_min = n_min * 10 + N[i] ; int n_max = 0; for(i=3; i>=0; i–) n_max = n_max * 10 + N[i]; return n_max-n_min; } 第五题,假设有m+n个人,其中, m个人手持面额为5角的硬币, n个人手持面额为1元的硬币,

2015年蓝桥杯A组试题及答案

2015蓝桥杯A组试题 方程整数解 方程: a^2 + b^2 + c^2 = 1000 (或参见【图1.jpg】) 这个方程有整数解吗?有:a,b,c=6,8,30 就是一组解。 你能算出另一组合适的解吗? 请填写该解中最小的数字。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 #include"stdio.h" #include"windows.h" int main() { int a, b, c; for (a = 1; a < 31;a++) for (b= 1; b < 31; b++) for (c = 1; c < 31; c++) { if (a*a + b*b + c*c == 1000) printf("%d %d %d\n", a, b, c); } printf("%d %d %d",a,b,c); system("pause"); return 0; } 星系炸弹 在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。 每个炸弹都可以设定多少天之后爆炸。 比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。 请填写该日期,格式为yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19

请严格按照格式书写。不能出现其它文字或符号。 21+31(2014年)+365(2015年)+366(2016年)=783;1000-783=217(2017年的第217天爆炸);31+28+31+30+31+30+31=212(2017年前七个月的天数);217-212=5(2017年第8个月的第五天爆炸) 大牛有用excel直接拖,用vbs算,路漫漫其修远兮...... 奇妙的数字 小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。你能猜出这个数字是多少吗? 请填写该数字,不要填写任何多余的内容。 69,一个个试吧。 格子中输出 StringInGrid函数会在一个指定大小的格子中打印指定的字符串。 要求字符串在水平、垂直两个方向上都居中。 如果字符串太长,就截断。 如果不能恰好居中,可以稍稍偏左或者偏上一点。 下面的程序实现这个逻辑,请填写划线部分缺少的代码。 #include #include void StringInGrid(int width, int height, const char* s) { int i,k; char buf[1000]; strcpy(buf, s); if(strlen(s)>width-2) buf[width-2]=0; printf("+"); for(i=0;i

(完整版)蓝桥杯大赛青少年创意编程Scratch初级组模拟题

一、单选题(每题20分) 1、(难度系数1)在舞台添加小猫角色,它的所有设置均为默认设置。舞台布局和程序运行舞台布局程序运行结果 运行以下哪段程序后,可以得到以上结果。() A B C D以上程序都不对 2、(难度系数2)小猫看到远处好久不见的朋友,于是跳起来说“你好!”想引起朋友的注意,执行以下程序后,小猫说“你好!”一共几秒?() A 0 B 2 C4 D 8

3、(难度系数3)当角色执行完这段程序后,舞台可能出现的图形是?() A、正三角形 B、正四边形 C、正六边形 D、正八边形 4、(难度系数4)执行完这段程序后,变量b的值可能是?() A、11 B、65 C、130 D、6065

5、(难度系数5)小红想做一个月亮围绕地球旋转的动画,如图,舞台有两个角色:“地球”“月球”,并写如下程序,小红希望运行程序后,月球以地球为中心做圆周运动。() A、B、 B、D、

1、难度系数2,满分50分 准备工作:导入背景库中的“bedroom2”,并导入角色库中的“Abby”“Candy”角色。 编程实现: Abby打扫完房间,房间停电了,Abby点上了一根蜡烛。想象停电后,点上蜡烛的效果。 图1.“关灯以前” 图2.“关灯后”

1、程序开始运行时,显示如图1.“关灯以前” 2、2秒以后,背景变暗,屏幕左边的墙上出现比小猫自身还要大的影子,如图2.“关灯后”。 3、之后一直保持图2效果 4、蜡烛、Abby、影子之间和大小应大致正确。 将程序保存在桌面,命名为“1.sb2” 评判标准: 10分:程序运行后,按图1的效果显示并保持至少2秒钟; 30分:在10分的基础上,能按图2的要求背景变暗,出现Abby阴影; 50分:在30分的基础上,背景中的圣诞树仍可见,蜡烛、Abby、影子之间的位置关系 基本正确,Abby和影子的大小关系符号逻辑。 2、难度系数3,满分50分 编程实现:今天天气多云,小熊在海边散步,他的头顶飘来一朵云,一阵风吹来,云飘走了,越飘越远,最后消失在空中。 具体要求: 1、舞台背景选择图示背景,增加云朵、小熊角色。 2、程序开始运行时,“小熊”“云朵”角色出现在图1所示的位置。 3、“云朵”角色能实现“从小熊头顶飘离,并向右上角平滑地漂移,越飘越高,越飘越小,直到最后消失”的动画效果。 将程序保存在桌面,命名为“2.sb2” 图1 图2 图3 图4

蓝桥杯所有真题

2012(1) 假设有两种微生物X和Y,X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。现在已知有新出生的X=10, Y=89,求60分钟后Y的数目。如果X=10,Y=90 呢?本题的要求就是写出这两种初始条件下,60分钟后Y的数目。题目的结果令你震惊吗?这不是简单的数字游戏!真实的生物圈有着同样脆弱的性质!也许因为你消灭的那只Y 就是最终导致Y 种群灭绝的最后一根稻草!请忍住悲伤,把答案写在“解答.txt”中,不要写在这里!(循环) 2012(2) 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:ABCDE * ? = EDCBA。他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!”华生:“我猜也是!”于是,两人沉默了好久,还是没有算出合适的结果来。请你利用计算机的优势,找到破解的答案。把ABCDE 所代表的数字写出来。 答案写在“解答.txt”中,不要写在这里!(循环、递归) 2012(3) 有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复...... 直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。当第4瓶酒平分喝下后,大家都倒下了。等船长醒来,发现海盗船搁浅了。他在航海日志中写到:“......昨天,我正好喝了一瓶.......奉劝大家,开船不喝酒,喝酒别开船......”。请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人。如果有多个可能的答案,请列出所有答案,每个答案占一行。格式是:人数,人数,...例如,有一种可能是:20,5,4,2,0。答案写在“解答.txt”中,不要写在这里!(循环、递归) #include void main() { int i,j,k,l; for(i=4;i<21;i++) { for(j=3;j

蓝桥杯试题标准答案(练习)

1、亲密数:假设有a、b两个数,若a的所有因子之和等于b,b的所有因子之和等于a,并且a不等于b,则称a和b是一对亲密数。如284和220就是一对亲密数。 #include int main() { int a,b,i,n; for(a=1;a<=10000;a++) { for(b=0,i=1;i<=a/2;i++) if(a%i==0) b+=i; for(n=0,i=1;i<=b/2;i++) if(b%i==0) n+=i; if(n==a&&a!=b&&a

int main() { long days = 5; /*1999年的最后一天为周5,把下一年加上5天对7取余为0的,则是周日*/ int i = 2000; for(;;) /*无循环终止条件,可以利用break语句终止循环*/ { if(i%4==0&&i%100!=0||i%400==0) { days = days%7+366; } else { days = days%7+365; } if(days%7==0&&i%100==99) { printf("%d",i); break; } i++; } return 0; } 3、马虎的算式:小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。

蓝桥杯练习系统题目汇总

蓝桥杯练习系统题目汇总: 入门训练 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 2.#include 3.#define MOD 10007 4.#define MAXN 1000001 5.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.util.Scanner; 2.public class Main{ 3.public static void main(String[] args) { 4.Scanner scanner = new Scanner(System.in) ; 5.int num = scanner.nextInt() ; 6.int[] a = new int[num+2] ; 7.a[1] = a[2] = 1; 8.if(num == 1) { 9.a[num] = 1 ; 10.}else if(num == 2) { 11.a[num] = 1 ; 12.}else{ 13.for(int i = 3; i <= num; i++) { 14.a[i] = (a[i - 1] + a[i - 2] ) % 10007 ; 15.} 16.} 17.System.out.println(a[num]); 18.} 19.} 2. 实数输出 问题描述 给定圆的半径r,求圆的面积。 输入格式 输入包含一个整数r,表示圆的半径。 输出格式 输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。 说明:在本题中,输入是一个整数,但是输出是一个实数。 对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误。 实数输出的问题如果没有特别说明,舍入都是按四舍五入进行。 样例输入 4 样例输出 50.2654825 数据规模与约定

蓝桥杯试题C语言答案

1、A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些 人参加了竞赛: (1)A参加时,B也参加; (2)B和C只有一个人参加; (3)C和D或者都参加,或者都不参加; (4)D和E中至少有一个人参加; (5)如果E参加,那么A和D也都参加。 00110 c、d #include<> int main() { int a,b,c,d,e; /*0表示不参加, 1表示参加.*/ for(a=0;a<2;a++) for(b=0;b<2;b++) for(c=0;c<2;c++) for(d=0;d<2;d++) for(e=0;e<2;e++) { if(a&&!b) continue; if(b&&c||!b&&!c) continue; if(c&&!d||!c&&d) continue; if(!d&&!e) continue; if(e&&(!a||!d)) continue; printf("%d%d%d%d%d",a,b,c,d,e); } return 0; } 2、某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件: 1)A和B两人中至少去一人; 2)A和D不能一起去; 3)A、E和F三人中要派两人去; 4)B和C都去或都不去; 5)C和D两人中去一个; 6)若D不去,则E也不去。 试编写一个程序,输出问应当让哪几个人去? #include<> int main() { int a,b,c,d,e,f; for(a=1;a>=0;a--) for(b=1;b>=0;b--)/*1:去 0:不去*/ for(c=1;c>=0;c--)

2020年第11届蓝桥杯C++B组 第一次省赛真题

试题 A: 跑步训练 答案:3880 #include using namespace std; int main(void) { int n = 10000, minu, sec; for (int i = 0; ; i++) { if (i % 2 == 0) { // 跑 if (n > 600) { n -= 600; } else { // 体力不足跑完一分钟 minu = i; sec = n / 10; break;

} } else { // 休息 n += 300; } } cout << (minu * 60 + sec) << endl; return 0; } 试题 B: 纪念日 答案:52038720

可以通过excel来计算出,两个日期相差36138天 所以答案为:36138*24*60=52038720 试题 C: 合并检测 答案:10 假设有n个人,需要使用的试剂盒有 n / k + 0.01 ? n ? k n/k+0.01*n*k n/k+0.01?n?k 提取n,有 n ? ( 1 / k + 0.01 ? k ) n*(1/k+0.01*k) n?(1/k+0.01?k) 所以,当k=10时,有最小值 试题 D: REPEAT 程序

答案:241830 这道题我只会转换为python的做法 可以先用记事本打开prog.txt,再进行替换。 将“REPEAT” 替换为“for i in range(”,再将“:” 替换为“):”此时就把代码转换成了python,运行之后的结果是 241830 试题 F: 整除序列

蓝桥杯C语言本科B组预赛试题

蓝桥杯C语言本科B组预赛试题

————————————————————————————————作者:————————————————————————————————日期:

2014蓝桥杯C/C++语言本科B组预赛试题(完整) 1.啤酒和饮料 啤酒每罐2.3元,饮料每罐1.9元。小明买了若干啤酒和饮料,一共花了82.3元。 我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。 注意:答案是一个整数。请通过浏览器提交答案。 不要书写任何多余的内容(例如:写了饮料的数量,添加说明文字等)。 2.切面条 一根高筋拉面,中间切一刀,可以得到2根面条。 如果先对折1次,中间切一刀,可以得到3根面条。 如果连续对折2次,中间切一刀,可以得到5根面条。 那么,连续对折10次,中间切一刀,会得到多少面条呢? 答案是个整数,请通过浏览器提交答案。不要填写任何多余的内容。 3.李白打酒

话说大诗人李白,一生好饮。幸好他从不开车。 一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱: 无事街上走,提壶去打酒。 逢店加一倍,遇花喝一斗。 这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。 请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。 注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容。 4.史丰收速算 史丰收速算法的革命性贡献是:从高位算起,预测进位。不需要九九表,彻底颠覆了传统手算! 速算的核心基础是:1位数乘以多位数的乘法。 其中,乘以7是最复杂的,就以它为例。 因为,1/7是个循环小数:0.142857...,如果多位数超过142857...,就要进1 同理,2/7,3/7, ...6/7 也都是类似的循环小数,多位数超过n/7,就要进n

蓝桥杯模拟题加真题

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 1.#include 2.#include 3.#define MOD 10007 4.#define MAXN 1000001 5.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.return 0; 15.} 2、问题描述 给定圆的半径r,求圆的面积。 输入格式 输入包含一个整数r,表示圆的半径。

输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。 说明:在本题中,输入是一个整数,但是输出是一个实数。 对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误。 实数输出的问题如果没有特别说明,舍入都是按四舍五入进行。 样例输入 4 样例输出 50.2654825 数据规模与约定 1 <= r <= 10000。 提示 本题对精度要求较高,请注意π的值应该取较精确的值。你可以使用常量来表示π,比如PI=3.14159265358979323,也可以使用数学公式来求π,比如PI=atan(1.0)*4。 1.#include 2.#include 3. 4.int main() 5.{ 6.int r; 7.double s, PI; 8.scanf("%d", &r); 9.PI = atan(1.0) * 4; 10.s = PI * r * r; 11.printf("%.7lf", s); 12.return 0; 13.} 3、问题描述 求1+2+3+...+n的值。 输入格式 输入包括一个整数n。 输出格式 输出一行,包括一个整数,表示1+2+3+...+n的值。 样例输入 4 样例输出 10 样例输入

2016蓝桥杯c-c++省赛试题及答案解析

2016蓝桥杯c-c++B组省赛试题及解析第一题 煤球数目 有一堆煤球,堆成三角棱锥形。具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有多少个煤球? 请填表示煤球总数目的数字。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 答案:171700 #include int main() { int a[101] ={0}; for(int i = 1 ; i < 101 ; i ++) a[i] = a[i-1] + i; int ans = 0; for(int j = 1 ; j < 101 ; j ++) ans += a[j]; printf("%d\n",ans); return 0; } 第二题 生日蜡烛 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。现在算起来,他一共吹熄了236根蜡烛。

请问,他从多少岁开始过生日party的? 请填写他开始过生日party的年龄数。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 答案:26 #include int main() { int start,end; for(start = 1 ; start < 236 ; start ++) { for( end = start ; end < 236 ; end ++ ) { int sum = 0; for(int i = start; i <= end; i ++) sum += i; if( sum == 236) { printf("start : %d end : %d\n",start,end); } } } return 0; } 第三题 凑算式 B DEF A + --- + ------- = 10 C GHI (如果显示有问题,可以参见【图1.jpg】) 这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。 比如: 6+8/3+952/714 就是一种解法, 5+3/1+972/486 是另一种解法。

蓝桥杯算法vip训练习题与答案带测试数据1

算法训练 编号:ALGO-1 题目:区间k大数查询列 关键字:排序查找 类型:普通试题 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。 输入格式 第一行包含一个数n,表示序列长度。 第二行包含n个正整数,表示给定的序列。 第三个包含一个正整数m,表示询问个数。 接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。 输出格式 总共输出m行,每行一个数,表示询问的答案。

样例输入 5 1 2 3 4 5 2 1 5 2 2 3 2 样例输出 4 2 数据规模与约定 对于30%的数据,n,m<=100; 对于100%的数据,n,m<=1000; 保证k<=(r-l+1),序列中的数<=1000000。本题的Java参考代码如下: import java.io.BufferedInputStream; import java.io.IOException; import java.util.Arrays; public class Main {

private static BufferedInputStream in = new BufferedInputStream(System.in);//回顾一下 public static void main(String[] args) throws IOException、//回顾 { int[] nums = new int[readInt()];//重点看一下 for(int i=0; i0; i--) { int a = readInt(); int b = readInt(); int c = readInt();//?? int[] tn = new int[b-a+1]; for(int j=0; j

相关文档
最新文档