zoukankan      html  css  js  c++  java
  • 898B. Proper Nutrition#买啤酒问题(枚举&取余)

    题目出处:http://codeforces.com/problemset/problem/898/B

    题目大意:为一个整数能否由另外两个整数个整数合成

    #include<iostream>
    using namespace std;
    int main(){
        int n,a,b;
        cin>>n>>a>>b;
        if(n%2==1 && a%2==0  && b%2==0 ){cout<<"NO"<<endl;return 0;}
        if(a==b && n%a!=0){cout<<"NO"<<endl;return 0;}
        if(b%a==0 && n%a!=0){cout<<"NO"<<endl;return 0;}
        if(a%b==0 && n%b!=0){cout<<"NO"<<endl;return 0;}
        if(a==1){cout<<"YES"<<endl<<n<<" "<<0<<endl;return 0;}
        if(b==1){cout<<"YES"<<endl<<0<<" "<<n<<endl;return 0;}
        for(int i=0;i<=n/a;i++){//一层循环加上取余的方法 
            if( (n-i*a)%b==0 ){cout<<"YES"<<endl<<i<<" "<<(n-i*a)/b<<endl;return 0;}
        }
        cout<<"NO"<<endl;
        return 0;
    }

    本题和分披萨那题题意相同,差别在于本题测试数据大,双层枚举会超时。

    使用第一层枚举下再进行取余求解即可。

    前面很多if语句只是对特殊情况的分析,加快特殊情况的解题速度。

    个人分享,欢迎指导,未经允许,请勿转载。谢谢!
  • 相关阅读:
    leetcode 137
    leetcode 134
    133. Clone Graph
    leetcode 131
    leetcode 130
    mac uwsgi ssl issue handler
    leetcode 85 Maximal Rectangle golang
    leetcode 84 golang
    leetcode 61
    C# 后台实现一次上传多个文件
  • 原文地址:https://www.cnblogs.com/hello-OK/p/8052033.html
Copyright © 2011-2022 走看看