码迷,mamicode.com
首页 > 其他好文 > 详细

898B. Proper Nutrition#买啤酒问题(枚举&取余)

时间:2017-12-17 15:04:09      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:if语句   problem   com   ios   测试数据   cout   body   特殊情况   特殊   

题目出处: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语句只是对特殊情况的分析,加快特殊情况的解题速度。

898B. Proper Nutrition#买啤酒问题(枚举&取余)

标签:if语句   problem   com   ios   测试数据   cout   body   特殊情况   特殊   

原文地址:http://www.cnblogs.com/hello-OK/p/8052033.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!