题目出处: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的时候注意其作用空间。(低级错误)
本题优化可以一层枚举中使用取余的方法解决。