903A. Hungry Student Problem#饥饿的学生(暴力&双层枚举)

题目出处:http://codeforces.com/problemset/problem/903/A

题目大意就是:一个数能否用正整数个另外两个数合成

#include<iostream>
using namespace std;
//双重枚举 
int main(){
    int n;cin>>n;
    while(n--){
        int temp;    cin>>temp;    int flag = 1;
        for(int i=0; i<100/3; i++){
            for(int j=0; j<100/7; j++){
                if(i*3+j*7 == temp){ flag = 0; break; }//本来想使用连续break发现不行; 
            }
        }
        if(flag) cout<<"NO"<<endl;
        else cout<<"YES"<<endl;
    }
    return 0;
}

题目数据比较小,可以考虑直接双层循环,暴力求解。

在做本题的时候有失误,也让自己对break的认识在熟悉了一下,本来天真的认为可双break跳到最外层结束;

但是break第一个执行后,后面的break就会被跳开了。使用break的时候注意其作用空间。(低级错误)

本题优化可以一层枚举中使用取余的方法解决。

posted @ 2017-12-17 14:15  hello_OK  阅读(257)  评论(0编辑  收藏  举报