前言:
今天正式进入蓝桥杯备赛环节,每天可能会分享几个蓝桥杯历年真题来记录,话不多说,直接看题
题目描述:
一步之遥
从昏迷中醒来,小明发现自己被关在 X 星球的废矿车里。 矿车停在平直的废弃的轨道上。 他的面前是两个按钮,分别写着 “F” 和 “B”。
小明突然记起来,这两个按钮可以控制矿车在轨道上前进和后退。 按 F,会前进 97 米。按 B 会后退-127 米。 透过昏暗的灯光,小明看到自己前方 1 米远正好有个监控探头。 他必须设法使得矿车正好停在摄像头的下方,才有机会争取同伴的援助。 或许,通过多次操作 F 和 B 可以办到。
矿车上的动力已经不太足,黄色的警示灯在默默闪烁... 每次进行 F 或 B操作都会消耗一定的能量。 小明飞快地计算,至少要多少次操作,才能把矿车准确地停在前方 1 米远的地方。
请问为了达成目标,最少需要操作的次数是多少。
解析:
这道题是一道填空题,题目意思不难理解,按‘F’表示向前97米,按‘B’表示向后127米,题目要求最少操作多少次能把矿车停在前方1米处,我们这里假设经过操作向前x次和向后操作y次正好满足题意,用数学表示:97x-127y=1,这里可以直接用暴力枚举的方法求出答案,今天也是介绍这种方法,当然这道题也可以用欧几里得算法来求,后续会补充。
代码实现:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int ans=600;
for(int i=0;i<=300;i++)
for(int j=0;j<=300;j++)
{
if(i*97-j*127==1)
{
ans=min(ans,i+j);
}
}
printf("%d\n",ans);
return 0;
}
小结:
这个填空题用暴力法可以轻松解决,之后会补充此题的欧几里得算法的解法,需要用求逆元的知识,难度会加大,但可以培养算法思维,今天的分享先到这里,明天准时更新。