zoukankan      html  css  js  c++  java
  • 一步之遥——第七届蓝桥杯C语言B组(国赛)第一题

    原创


    一步之遥

    从昏迷中醒来,小明发现自己被关在X星球的废矿车里。
    矿车停在平直的废弃的轨道上。
    他的面前是两个按钮,分别写着“F”和“B”。

    小明突然记起来,这两个按钮可以控制矿车在轨道上前进和后退。
    按F,会前进97米。按B会后退127米。
    透过昏暗的灯光,小明看到自己前方1米远正好有个监控探头。
    他必须设法使得矿车正好停在摄像头的下方,才有机会争取同伴的援助。
    或许,通过多次操作F和B可以办到。

    矿车上的动力已经不太足,黄色的警示灯在默默闪烁...
    每次进行 F 或 B 操作都会消耗一定的能量。
    小明飞快地计算,至少要多少次操作,才能把矿车准确地停在前方1米远的地方。

    请填写为了达成目标,最少需要操作的次数。

    注意,需要提交的是一个整数,不要填写任何无关内容(比如:解释说明等)

     

    此题我用的解法是扩展欧几里德算法

    具体算法看我的另外一篇博客:http://www.cnblogs.com/chiweiming/p/8878202.html

    当我们算出 97x+127y=gcd(97,127)的第一组解(x0,y0)后;

    我们可以得到 97x+127y=1的第一组解:

    x=x0*1/gcd(97,127);

    y=y0*1/gcd(97,127);

    然后我们输出 abs(x)+ abs(y)即可。

    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    
    int x,y;
    
    int gcd(int a,int b)    //扩展欧几里德算法 
    {
        int d;
        if(b==0)
        {
            x=1;
            y=0;
            return a;
        }
        else
        {
            d=gcd(b,a%b);
            int temp;
            temp=x;
            x=y;
            y=temp-(a/b)*y;
            return d;
        }
    }
    
    int main()
    {
        int Byue;
        Byue=gcd(97,127);    //调用后x,y作为 97x+127y=gcd(97,127)的第一组解
    //  printf("%d %d
    ",x,y);
        printf("%d",abs( x*1/Byue  ) + abs( y*1/Byue ) );
        
        return 0;
    }

    下面给出直接暴力破解的代码:

     1 #include<stdio.h>
     2 int main()
     3 {
     4     int x,y,t,flag=0;
     5     for(t=0; ;t++)    //假设需要t步完成 
     6     {
     7         for(x=0;x<t;x++)    //走x步97 
     8         {
     9             y=t-x;    //剩下走y步127 
    10             if(97*x-127*y==1)
    11             {
    12                 printf("%d",x+y);
    13                 flag=1;
    14             }
    15             if(flag==1)
    16                 break;
    17         }
    18         if(flag==1)
    19             break;
    20     }    
    21     return 0;
    22 }

    11:07:31

    2018-04-19

  • 相关阅读:
    HTML5之画布的拖拽/拖放
    HDU 4028 The time of a day STL 模拟题
    java 使用htmlunit模拟登录爬取新浪微博页面
    【java.lang.UnsupportedClassVersionError】版本不一致出错
    Unsupported major.minor version 52.0
    java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal问题解决
    htmlunit抓取js执行后的网页源码
    Maven添加本地依赖
    htmlunit爬取js异步加载后的页面
    HtmlUnit爬取Ajax动态生成的网页以及自动调用页面javascript函数
  • 原文地址:https://www.cnblogs.com/chiweiming/p/8881132.html
Copyright © 2011-2022 走看看