zoukankan      html  css  js  c++  java
  • CodeForces 1244C-exgcd?

    C. The Football Season

    题目大意:一场比赛,赢了得w分,平局得d分,如果输掉比赛,则不得分,现一共进行了n场比赛,得到了p分,w和d给出

    问能否求出满足题意的解

    题目链接:https://codeforces.com/contest/1244/problem/C

    解题思路:此题可以用拓展欧几里得算法来进行求解,但是由于太菜,只能另求他路,我们注意到,如果我赢了d局,平局为w局,这时候的比分是一样的。so有解的情况下,我们来假设我们的平局数为y

    ,如果y小于w这时候我们可以遍历y从0到w,不会超时,如果y大于w的话,我们可以是w*d的得分变成赢得局数里面的,也就是赢得局数变成了x+d,这时候,x+y变成了x+d+y-w小于原来的x+y但是总分数是不变的

    在有解的情况,肯定存在一组解是y<w,如果在y从0到w的情况没有找到的话,就属于没有解的情况

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    int main()
    {
        ll n,p,w,d;
        cin>>n>>p>>w>>d;
        for(ll y=0;y<w;y++)
        {
            ll ans=p-y*d;
            if(ans%w==0&&y+ans/w<=n&&ans>=0)
            {
                cout<<ans/w<<" "<<y<<" "<<n-y-ans/w<<endl;
                return 0;
            }
        }
        cout<<"-1"<<endl;
        return 0;
    } 
  • 相关阅读:
    17.异常(三)之 e.printStackTrace()介绍
    16.异常(二)
    15.异常(一)
    AuthCodeTool验证码
    FileUploadTool
    JdbcTool
    myeclipse-java项目转换成web项目
    中文注释乱码change
    css鼠标样式
    java script 弹出框
  • 原文地址:https://www.cnblogs.com/tombraider-shadow/p/11688317.html
Copyright © 2011-2022 走看看