挑战蓝桥杯之 —— 一步之遥
1.问题描述:
从昏迷中醒来,小明发现自己被关在X星球的废矿车里。
矿车停在平直的废弃的轨道上。
他的面前是两个按钮,分别写着“F”和“B”。
小明突然记起来,这两个按钮可以控制矿车在轨道上前进和后退。
按F,会前进97米。按B会后退127米。
透过昏暗的灯光,小明看到自己前方1米远正好有个监控探头。
他必须设法使得矿车正好停在摄像头的下方,才有机会争取同伴的援助。
或许,通过多次操作F和B可以办到。
矿车上的动力已经不太足,黄色的警示灯在默默闪烁...
每次进行 F 或 B 操作都会消耗一定的能量。
小明飞快地计算,至少要多少次操作,才能把矿车准确地停在前方1米远的地方。
请填写为了达成目标,最少需要操作的次数。
注意,需要提交的是一个整数,不要填写任何无关内容(比如:解释说明等)”
这道题在竞赛中要求是只提交答案,但是我们不可能拿答案一个一个去尝试,因为那么容易就能解决的,毕竟是蓝桥杯的决赛试题之一。我们既然学了编程,就要用编程的思想去解决实际问题。
2.代码展示:
我发现只需简单几句程序就可以解决此问题,非常简单,现将代码分享于下:
#include
#define M 100
int main()
{
int i,j;
for(i=0;i
for(j=0;j
{
if(97*i-127*j==1)
{
printf("前进:%d步\t后退%d步\t",i,j);
printf("\n共操作%d步!\n",(i+j));
}
}
return 0;
}
程序是不是看起来好简单?没错,其实有些问题简单几步就可以解决,我们现在要锻炼的就是会把实际问题转变为真正的C语言,然后用程序来解决类似的问题。网上也有好多关于此问题的解答,但感觉较为复杂,而且好多东西也不大能看懂,显然网上有些东西只能做参考,我们或许会有更好的解决方案,所以一切请不要依赖于网络,将自己的思维完全局限于网络!
注:至于为什么小编要定义M为100,其实小编也是尝试,如果操作步骤超过200次(近似值),我们只需要继续放大M的值就OK了!