2017第八届蓝桥杯大赛软件类B组C/C++省赛题解

这篇博客提供了2017第八届蓝桥杯大赛软件类B组C/C++省赛的试题解析,包括购物单结果填空、等差素数列、承压计算等多个问题的解答,涉及算法和编程技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

试题A:购物单(结果填空)

题意
在这里插入图片描述

以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。
**** 180.90 88折
**** 10.25 65折
**** 56.14 9折
**** 104.65 9折
**** 100.30 88折
**** 297.15 半价
**** 26.75 65折
**** 130.62 半价
**** 240.28 58折
**** 270.62 8折
**** 115.87 88折
**** 247.34 95折
**** 73.21 9折
**** 101.00 半价
**** 79.54 半价
**** 278.44 7折
**** 199.26 半价
**** 12.97 9折
**** 166.30 78折
**** 125.50 58折
**** 84.98 9折
**** 113.35 68折
**** 166.57 半价
**** 42.56 9折
**** 81.90 95折
**** 131.78 8折
**** 255.89 78折
**** 109.17 9折
**** 146.69 68折
**** 139.33 65折
**** 141.16 78折
**** 154.74 8折
**** 59.42 8折
**** 85.44 68折
**** 293.70 88折
**** 261.79 65折
**** 11.30 88折
**** 268.27 58折
**** 128.29 88折
**** 251.03 8折
**** 208.39 75折
**** 128.88 75折
**** 62.06 9折
**** 225.87 75折
**** 12.89 75折
**** 34.28 75折
**** 62.16 58折
**** 129.12 半价
**** 218.37 半价
**** 289.69 8折

在这里插入图片描述
做法:用文本打开以后根据关键字替换就能得到这个啦

180.90 88
10.25 65
56.14 90
104.65 90
100.30 88
297.15 50
26.75 65
130.62 50
240.28 58
270.62 80
115.87 88
247.34 95
73.21 90
101.00 50
79.54 50
278.44 70
199.26 50
12.97 90
166.30 78
125.50 58
84.98 90
113.35 68
166.57 50
42.56 90
81.90 95
131.78 80
255.89 78
109.17 90
146.69 68
139.33 65
141.16 78
154.74 80
59.42 80
85.44 68
293.70 88
261.79 65
11.30 88
268.27 58
128.29 88
251.03 80
208.39 75
128.88 75
62.06 90
225.87 75
12.89 75
34.28 75
62.16 58
129.12 50
218.37 50
289.69 80

再写以下代码计算出答案。

#include<bits/stdc++.h>
using namespace std;
int main() {
   
  double x, y, res = 0;
  for(int i = 1; i <= 50; ++i) {
   
    cin >> x >> y;
    res += x * (y / 100);
  }
  cout << res;
  return 0;
}

答案:5200(5136.86)


试题B:等差素数列(结果填空)

题意
在这里插入图片描述
做法其实搜索的时候并没有满怀信心 ,就是暴力就好了,还比较害怕数组没开够,没能找到公差更小的,其实在5000以内就够了,这谁想的到

代码

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10;
int prime[N], vis[N], k;
int check(int d) {
   
  int res = 210;
  for(int i = 0; i < k-10; ++i) {
   
    int f = 1, lst = prime[i];
    if(d == res) cout << lst << " ";
    for(int j = 0; j < 9; ++j) {
   
      if(d==res)cout << lst + d << " ";
      if(lst+d>=N) {
   
        f = 0; break;
      }
      if(vis[lst+d]) {
   
        f = 0; break;
      }
      lst = lst + d;
    }
    if(d==res) cout << endl;
    if(f) return 1;
  }
  return 0;
}
int main() {
   
  vis[0] = vis[1] = 1; 
  for(int i = 2; i < N; ++i) {
   
    if(!vis[i]) {
   
      prime[k++] = i; 
      for(int j = 2*i; j < N; j += i) vis[j] = 1;
    }
  }
  //for(int i = 0; i < k; ++i) printf("%d\n", prime[i]);
  for(int i = 2; i <= 1000; ++i) {
   
    if(check(i)) {
   
      cout << i; break;
    }
  }
  return 0;
}

答案:210


试题 C:承压计算(结果填空)

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

代码

#include<bits/stdc++.h>
using namespace std;
const int N = 100;
double tu[N][N];
int main() {
   
  double sum = 0;
  for(int i = 1, x; i < 30; ++i) {
   
    for(int j = 1; j <= i; ++j) {
   
      cin >> x; 
      tu[i][j] += x; sum += x;
      tu[i+1][j] += tu[i][j]/2; tu[i+1][j+1] += tu[i]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值