第十届蓝桥杯B组省赛真题及答案

1组队

第十届蓝桥杯B组省赛真题及答案_第1张图片
第十届蓝桥杯B组省赛真题及答案_第2张图片

110

2年号字串

第十届蓝桥杯B组省赛真题及答案_第3张图片

/*26进制*/
BYQ

3数列求值

第十届蓝桥杯B组省赛真题及答案_第4张图片

#include 

using namespace std;

int main()
{
    int f[4];
    f[0]=1;
    f[1]=1;
    f[2]=1;
    f[3]=3;
    int i=4;
    while(i<20190324)
    {
        f[0]=f[1];
        f[1]=f[2];
        f[2]=f[3];
        f[3]=(f[0]+f[1]+f[2])%10000;

        i++;
    }
    cout << f[3] << endl;
    return 0;
}

4数的分解

第十届蓝桥杯B组省赛真题及答案_第5张图片

#include
using namespace std;
bool check(int x)
{
    for(;x>0;x/=10)
    {
        if(x%10==2||x%10==4)
            return false;
    }
    return true;
}
int main()
{
    int cnt=0;
    for(int i=1; i<2019/3; i++)
    {
        if(check(i))
        {
            for(int j=i+1; j<2019-i-j;j++)
            {
                if(check(j)&&check(2019-i-j))
                    cnt++;
            }
        }
    }
    cout << cnt << endl;
    return 0;
}

5迷宫

第十届蓝桥杯B组省赛真题及答案_第6张图片
第十届蓝桥杯B组省赛真题及答案_第7张图片

不会

6特别数的和

第十届蓝桥杯B组省赛真题及答案_第8张图片

#include

using namespace std;

bool judge(int x)
{
    while(x)
    {
        if(x%10==2||x%10==0||x%10==1||x%10==9)
            return 1;
        else
            x/=10;
    }
    return 0;
}
int main()
{
    int n;
    cin >> n;
    int cnt=0;

    for(int i=1; i<=n; i++)
    {
        if(judge(i))
        {
            cnt+=i;
        }
    }
    cout << cnt << endl;
    return 0;
}

7完全二叉树的权值

第十届蓝桥杯B组省赛真题及答案_第9张图片
第十届蓝桥杯B组省赛真题及答案_第10张图片

#include

using namespace std;

int main()
{
    int a[1000000];
    int n, sum, flag=0, k=0, max=-100000;//第一层和最小是-100000
    cin >> n;

    for(int i=1; i<=n; i++)
    {
        cin >> a[i];
    }
    while(n) //计算二叉数深度
    {
        n/=2;
        k++;
    }
    for(int i=1; i<=k; i++)
    {
        sum=0;
        for(int j=pow(2,i-1); j<pow(2,i); j++)
        {
            sum+=a[j];
        }
        if(max<sum)
        {
            max=sum;
            flag=i;
        }
    }
    cout << flag << endl;
    return 0;
}

8等差数列

第十届蓝桥杯B组省赛真题及答案_第11张图片

#include 

using namespace std;

int gcd(int a, int b)
{
	for(int i=a;;i--)
	{
		if(a%i==0&&b%i==0)
		{
			return i;
		}
	}
}

int main()
{
	int n;
	cin >> n;
	int ary[n];
	for(int i=0; i<n; i++)
	{
		cin >> ary[i];
	}
	sort(ary, ary+n);
	int d=ary[1]-ary[0];
	if(ary[1]==ary[0])
	{
		cout << n << endl;
	}
	else
	{
		for(int i=1; i<n; i++)
		{
			d=gcd(d,ary[i]-ary[i-1]);
		}
		cout << (ary[n-1]-ary[0])/d+1 << endl;
	}
	
	return 0;
} 

你可能感兴趣的:(算法练习,算法)