2017第八届蓝桥杯大赛软件类B组C/C++省赛目录
试题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]