9.9 KiB
2023.8.20 _码客行_编程公益课 在线评估
- 师大附小六年级学生有$400$名学生参加期末测试,平均$92$分,其中男生的平 均分为$96$分,女生的平均分为$80$分,参加竞赛的男生比女生多多少人?
#include<iostream>
using namespace std;
int main()
{
cout<<"男生比女生多"<< 200 <<"人。"<<endl;
return 0;
}
解:简单方程,略
- 奇奇和马克在学习进位加法,可是他俩还是喜欢不进位的计算。于是他俩想知道$0$~$5999$中有多少个数与$1234$相加时,不会发生进位。
#include<iostream>
using namespace std;
int main(){
cout<<”有”<< <<”个数。”<<endl;
return 0
}
解: 本题考查乘法原理
千位可取值为(0-8)
百位可取值为(0-7)
十位可取值为(0-6)
个位可取值为(0-5)
所以一共有9*8*7*6=3024
但是,由于0 \sim 5999,所以千位上要有限制,最大不能到达6,也就是0 \sim 5,
6*8*7*6
练习题: 在$1$到$9999$有多少个正整数在与$4567$相加时,至少在一个数位中发生进位 答案:考虑都不进位的情况 千位可取值为
(0-5)百位为(0-4)十位为(0-3)个位为(0-2)所以一共有$654*3-1=359$个 发生进位的数有$9999-359=9640$个
- 奇奇和马克在马路一侧同向而行。马克步行,行走速度为$3.6$千米/时。奇奇 骑着自行车,速度为$10.8$千米/时。这时有一辆公共汽车从他们背后开过来, 公共汽车通过马克用了$6$秒,通过奇奇用了$10$秒。请计算并输出这辆公共汽 车车身的长度。(单位:米)
#include<iostream>
using namespace std;
int main(){
cout<<”这辆公共汽车车身长度为”<< 30 <<”米。”<<endl;
return 0;
}
注:本题考查千米/小时转化为 米/秒后进行计算
- 马克用橡皮泥捏了一些特殊的动物形象。动物$1$有$1$头$1$脚、动物$2$有$2$头
4脚、动物$3$有$1$头$3$脚、动物$4$有$1$头$4$脚。所有橡皮泥捏完后,马克数了一下 所有动物共有$45$个头、$119$只脚,且动物$4$的数量恰好是动物$2$的$2$倍,现在 请你计算并输出动物$1$有多少只?
#include<iostream>
using namespace std;
int main(){
cout<<”动物1有”<< 8 <<”只。”<<endl;
return 0;
}
解:
\large \left\{\begin{matrix}
a+2b+c+d=45 & ①\\
a+4b+3c+4d=119 & ②\\
d=2b & ③\\
\end{matrix}\right.
将 ③ 代入 ①,② 得到
\large \left\{\begin{matrix}
a+4b+c=45 & ④ \\
a+12b+3c=119 & ⑤
\end{matrix}\right.
④ \times 3
\large \left\{\begin{matrix}
3a+12b+3c=135 & \\
a+12b+3c=119 &
\end{matrix}\right.
上下相减
得到2a=16
解得a=8
- 爸爸、妈妈、马克三人的苹果数不一样,爸爸的苹果最多,他拿出一些分给 妈妈和马克,使得妈妈和马克的苹果数都比原来增加了$2$倍,现在妈妈的苹 果数又最多,妈妈又拿出一些分给爸爸和马克,使爸爸和马克的苹果数各增 加了$2$倍,最后马克的苹果数又最多,最后,马克也拿出一些分给爸爸和妈 妈,使爸爸和妈妈的苹果数各增加$2$倍。最终三个人的苹果数一样多,他们 三人一共有$162$个苹果 ,求三人原来各有多少个苹果?爸爸( )个,妈妈( )个,马克( )个。
#include<iostream>
using namespace std;
int main()
{
cout<<”最初,爸爸有”<<110 <<”个苹果,妈妈有”<<38 <<”个苹
果,马克有”<<14 <<”个苹果。”;
return 0
}
倒推法,不再赘述
6.由于绘画工的辞职,马克所在的公司剩下一批需要绘画的工作,同时公司每 天还有新的固定数量的绘画工作增加。绘画工作是以页计数的,且每个绘画 工工作速度是相同固定的。秘书告诉马克,如果现在雇佣$5$名工人,$24$天可 以完成所有工作;如果聘用$9$名工人,$12$天可以完成所有工作。最终,马克 聘用了一些员工,工作$8$天后,由于业务减少,每天新增的工作量降为原来 的一半,最终这些员工用$40$天刚好完成了所有的工作。请计算并输出马克实 际聘用的员工数。
#include<iostream>
using namespace std;
int main(){
cout<<”马克实际雇佣了”<< 3 <<”名员工。”<<endl;
return 0;
}
解:
设原有的任务数为S,每天增加的为V,最终雇佣了$n$个员工,则有方程:
5*24=S+24*V ①
9*12=S+12*V ②
解方程得12V=12
\therefore V=1,S=96
S+8*V+1/2*V*32=40*n
将值代入
96+8+16=40n
n=3
总结:就是一个披着雇佣工人外貌的牛吃草问题
- 马克入住的宾馆$2$楼有$20$个房间,此时房间所有灯都是开着的。马克从$1$号房 间开始,第一次按下$1$号房间的开关,第二次按下$2,3$号房间的开关,第三次 按下$4,5,6$号房间的开关,……第$20$次按下所有房间的开关。请问,最后灯 亮着的房间数。
#include<iostream>
using namespace std;
int main(){
cout<<”最后亮灯的房间有”<< 10 <<”间。”<<endl;
return 0;
}
解: 最开始灯都是开着的,所以,按奇数下是关了,按偶数下是开了
#include <bits/stdc++.h>
using namespace std;
const int N = 21;
int b[N];
int main() {
int start = 1;
for (int i = 1; i <= 20; i++) {
cout << "i=" << i << ",按下的房间号:";
for (int j = start; j < start + i; j++) {
if (j > 20) {
b[j - 20]++;
cout << j - 20 << " ";
} else {
b[j]++;
cout << j << " ";
}
}
cout << endl;
start = start + i;
if (start > 20) start = start - 20;
}
int cnt = 0;
for (int i = 1; i <= 20; i++)
if (b[i] % 2 == 0) cnt++;
cout << "最后亮灯的房间数:" << cnt << endl;
return 0;
}
i=1,按下的房间号:1
i=2,按下的房间号:2 3
i=3,按下的房间号:4 5 6
i=4,按下的房间号:7 8 9 10
i=5,按下的房间号:11 12 13 14 15
i=6,按下的房间号:16 17 18 19 20 1
i=7,按下的房间号:2 3 4 5 6 7 8
i=8,按下的房间号:9 10 11 12 13 14 15 16
i=9,按下的房间号:17 18 19 20 1 2 3 4 5
i=10,按下的房间号:6 7 8 9 10 11 12 13 14 15
i=11,按下的房间号:16 17 18 19 20 1 2 3 4 5 6
i=12,按下的房间号:7 8 9 10 11 12 13 14 15 16 17 18
i=13,按下的房间号:19 20 1 2 3 4 5 6 7 8 9 10 11
i=14,按下的房间号:12 13 14 15 16 17 18 19 20 1 2 3 4 5
i=15,按下的房间号:6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
i=16,按下的房间号:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
i=17,按下的房间号:17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13
i=18,按下的房间号:14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11
i=19,按下的房间号:12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10
i=20,按下的房间号:11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10
最后亮灯的房间数:10
- 一个快钟每时比标准时间快$8$分,一个慢钟每时比标准时间慢$7$分。将两个钟 同时调到标准时间,结果在$24$时内,快钟显示$9$点整时,慢钟恰好显示$7$点整。 此时的标准时间是多少?
#include<iostream>
using namespace std;
int main(){
cout<<”此时的标准时间是”<< <<”点”<< <<”分”<<endl;
return 0;
}
解: 每小时快钟比慢钟快$8+7=15$分钟,$9$点与$7$点相差$120$分钟,即走了$120÷15=8$小时,故快钟比标准时间快了$8×8=64$分钟,即此时的标准时间是$7$点$56$分。
- 一个自然数除$429$、$791$、$500$所得的余数分别是$x+5$、$2x$、$x$,这个自然数是多少?
#include<iostream>
using namespace std;
int main()
{
cout<<”这个自然数是”<< <<”。”<<endl;
return 0;
}
编码解法
#include <bits/stdc++.h>
using namespace std;
int main() {
for (int i = 1;; i++) {
int a = 429 % i, b = 791 % i, c = 500 % i;
if (a == c + 5 && b == 2 * c) {
cout << i << endl;
cout << "a=" << a << ",b=" << b << ",c=" << c << endl;
break;
}
}
return 0;
}
数学解法
设这个数为K,得:
429-(x+5)=mK,
即
429-(x+5)=mK -> 424=mK+x
791-2x=nK \ \ \ \ \ \ \ \ \ -> 791=nK+2x
500-x=pK \ \ \ \ \ \ \ \ \ \ \ -> 500=pK+x
得:76=(p-m)K
57=(2m-n)K
209=(2p-n)K
所以$K$是$76,57,209$的公约数
76=4*19
57=3*19
209=11*19
所以$K$为19.
- 马克的碗中有纯蔗糖
100克,奇奇的杯子中有水200克。首先,马克将部 分纯蔗糖倒入奇奇的杯子里。接着,奇奇又将自己杯子中的糖水倒入马克的碗中。 此时,马克碗中蔗糖含量为50\%,奇奇杯子中蔗糖含量为$25%$。 现在请你计算并输出马克碗里此时有糖水多少克?
#include<iostream>
using namespace std;
int main(){
cout<<”奇奇杯子中此时有糖水”<< 100 <<”克。”<<endl;
return 0;
}
解: 不管你中间怎么折腾,最终的糖和水的重量不会改变。
设最后马克碗中糖水重为$x$克,则奇奇杯中糖水重为$100+200-x$克。
50\% \times x + (300-x) \times 25 \%=100
0.5x+75-0.25x=100
x=100
