2018蓝桥杯B(一)

A 年龄

今天蒜头君带着花椰妹和朋友们一起聚会,当朋友们问起年龄的时候,蒜头君打了一个哑谜(毕竟年龄是女孩子的隐私)说:“我的年龄是花椰妹年龄个位数和十位数之和的二倍”。
花椰妹看大家一脸懵逼,就知道大家也不知道蒜头君的年龄,便连忙补充道:“我的年龄是蒜头君个位数和十位数之和的三倍”。
请你计算:蒜头君和花椰妹年龄一共有多少种可能情况?
提醒:两位的年龄都是在 [10,100)[10,100) 这个区间内。

#include<stdio.h>
int main()
{
    int a,b,c,d,x,y;
    int i,j,t=0;
    for(i=1;i<10;i++)
    {
        for(j=0;j<10;j++)
        {
            x=i*10+j;
            y=2*(i+j);
            if(x==3*((y/10)+(y%10))) t+=1;
        }
    }
    printf("%d",t);
    return 0;
}

暴力出奇迹。


B 开关灯

蒜头君今天回到了老家的大宅院,老家的灯还是那中拉线的灯(拉一次为亮,再拉一次就灭),蒜头君觉得无聊。把 10001000 盏灯 33 的倍数拉了一次,55 的倍数拉了一次,7的倍数拉了一次(灯得的编号从 1-10001−1000,灯的初始状态都是亮的)。这个时候蒜头君在想还剩下几盏灯还在亮着?
提示:请不要输出多余的符号。

#include<stdio.h>
int main()
{
    int i,t=0;
    for(i=1;i<1001;i++)
    {
        if(i%3==0&&i%5!=0&&i%7!=0) t+=1;
        if(i%5==0&&i%3!=0&&i%7!=0) t+=1;
        if(i%7==0&&i%5!=0&&i%3!=0) t+=1;
        if(i%3==0&&i%5==0&&i%7==0) t+=1;
    }
    printf("%d",1000-t);
    return 0;
}


C 全排列

相信大家都知道什么是全排列,但是今天的全排列比你想象中的难一点。我们要找的是全排列中,排列结果互不相同的个数。比如:aab 的全排列就只有三种,那就是aab,baa,aba。
代码框中的代码是一种实现,请分析并填写缺失的代码。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 1000

char str[N], buf[N];
int vis[N], total, len;

void arrange(int num) {
    int i, j;
    if (num == len) {
        printf("%s\n", buf);
        total++;
        return;
    }
	for (i = 0; i < len; ++i) {
        if (!vis[i]) {
            for (j = i + 1; j < len; ++j) {
                if (str[i] == str[j] && vis[j]) {//这里是填写的代码
                    break;
                }
            }
            if (j == len) {
                vis[i] = 1;
                buf[num] = str[i];
                arrange(num + 1);
                vis[i] = 0;
            }
        }
    }
}
int main() {
    while (~scanf("%s", str)) {
        len = strlen(str);
        int i, j;
        for (i = 0; i < len; ++i) {
            for (j = i + 1; j < len; ++j) {
                if (str[i] > str[j]) {
                    char tmp = str[i];
                    str[i] = str[j];
                    str[j] = tmp;
                }
            }
        }
        total = 0;
        buf[len] = '\0';
        arrange(0);
        printf("Total %d\n", total);
    }
    return 0;
}

D 数列求值

在这里插入图片描述
在这里插入图片描述

#include<stdio.h>
double a[1005];
int main()
{
    int n;
    double an1,c;
    scanf("%d",&n);
    scanf("%lf%lf",&a[0],&an1);
    a[1]=0;
    for(int i=2;i<=n+1;i++)
    {
        scanf("%lf",&c);
        a[i]=2*a[i-1]-a[i-2]+2*c;
    }
    printf("%.2f\n",(an1-a[n+1])/(n+1));
    return 0;
}


猜你喜欢

转载自blog.csdn.net/qq_42906486/article/details/88621743