• 双六


    2016.1.26

    试题描述

    一个双六上面有向前向后无限延续的格子(如下图所示),每个格子都写有整数。其中0号格子是起点,1 号格子是终点。而骰子上只有a,b,-a,-b四个整数,所以根据a和b的值的不同,有可能无法到达终点。现在的问题是掷出a,b,-a,-b各多少次可以达到终点呢?(双六是类似大富翁的一款桌上游戏,不懂也没关系的啦)
             

    输入
    一行,包含两个数 a 和 b,两数之间用一个空格分隔,含义如题目所述。
    输出
    一个数,表示掷出四个整数次数的和,如果解不唯一,就输出和最小的值,如果无解则输出 0 。
    输入示例
    4 11
    输出示例
    4
    其他说明
    数据范围:1≤a,b≤10的9次方。
    样例解释:掷出a为3次,b为0次,-a为0次,-b为1次, 3*a-l*b=l。 

    扩展欧几里得= =注意判负和不成立的情况

    #include<iostream>
    using namespace std;
    int extgcd(int a,int b,int &x,int &y)
    {
        if(!b)
        {
            x=1;y=0;
            return a;
        }
        else
        {
            int temp=extgcd(b,a%b,y,x);
            y-=(a/b)*x;
            return temp;
        }
    }
    int main()
    {
        int a,b,x,y;
        scanf("%d%d",&a,&b);
        if(b>a) swap(a,b);
        int temp=extgcd(a,b,x,y);
        if(x<0) x=-x;if(y<0) y=-y;
        if(temp!=1) printf("0");
        else printf("%d",x+y);
    
    }
    View Code
  • 相关阅读:
    powershell:clear-item
    windows-杂笔
    powershell:Clear-EventLog
    powershell:Get-ChildItem
    powershell 杂笔
    power-shell:clear-content
    powershell:checkpoint-computer
    vim-缩进设置
    powershell:move-item
    powershell:add-content
  • 原文地址:https://www.cnblogs.com/16er/p/5159459.html
Copyright © 2020-2023  润新知