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<<”有”<< 3024 <<”个数。”<<endl;
return 0
}
解: 本题考查乘法原理
千位可取值为\((0-8)\)
百位可取值为\((0-7)\)
十位可取值为\((0-6)\)
个位可取值为\((0-5)\)
所以一共有\(9*8*7*6=3024\)
练习题:
在\(1\)到\(9999\)有多少个正整数在与\(4567\)相加时,至少在一个数位中发生进位
答案:考虑都不进位的情况
千位可取值为\((0-5)\)
百位为\((0-4)\)
十位为\((0-3)\)
个位为\((0-2)\)
所以一共有\(6*5*4*3 - 1 = 479\)个
发生进位的数有\(9999-479=9520\)个
- 奇奇和马克在马路一侧同向而行。马克步行,行走速度为\(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;
}
解:
假设在调到标准时间后过了\(t\)小时,快钟显示\(9\)点,慢钟显示\(7\)点
\(1\)小时快\(8\)分钟,快了\(8t\)分钟
\(1\)小时慢\(7\)分钟,慢了\(7t\)分钟
\(9*60-8t=7*60+7t\)
\(120=15t\)
\(t=8\)
- 一个自然数除\(429\)、\(791\)、\(500\)所得的余数分别是\(x+5\)、\(2x\)、\(x\),这个自然数是多少?
#include<iostream>
using namespace std;
int main()
{
cout<<”这个自然数是”<< 66556 <<”。”<<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=mK+A+5\),
即
\(424=mK+A\),
\(791=nK+2A\),
\(500=pK+A\),
得:\(500-429=(p-m)K-5,76=(p-m)K\),
\(429*2-791=(2m-n)K+10,57=(2m-n)K\),
\(500*2-791=(2p-n)K,209=(2p-n)K\),
所以\(K\)是\(76,57,209\)的公约数
\(76=4*19\)
\(57=3*19\)
\(209=11*19\)
所以\(K\)为\(19\),\(A=6\).
这个自然数\(19\)和\(A=6\).
- 马克的碗中有纯蔗糖 \(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\)