枚举算法(穷举),是指在一个有穷的、可能的解集合中,枚举出集合中的每一个元素,判断该元素是否符合题目的检验条件,得出解集。
枚举法是一种搜索算法,即对问题的所有可能解状态进行一次遍历。
例如:邮箱密码是3位数,最高位是6,并且能被18整除,问这个密码是?
一、枚举法求质数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <iostream> using namespace std; int main(){ long long m; cin>>m; bool IsPrime=1; for (int i = 2; i*i <m; i++){ if(m%i==0){ IsPrime=0; break; } } if(IsPrime) cout<<"yes"; else cout<<"no"; return 0; } |
二、求满足下面等式的a,b,c的取值(a,b,c取值范围:1<a,b,c<100)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <iostream> using namespace std; int main(){ int a,b,c; for (int a=1; a < 100; a++){ for ( b = a; b<100; b++){ for (c=b; c < 100; c++) { if((1+a)*(1+b)*(1+c)==2*a*b*c) cout<<a<<' '<<b<<' '<<c<<endl; } } } } |
NOIP2010数字统计 (P1179)
请统计某个给定范围 [L,R] 的所有整数中,数字 2 出现的次数。
比如给定范围 [2,22],数字 2 在数 2 中出现了 1 次,在数 12 中出现 1 次,在数 20 中出现 11 次,在数 21 中出现 11 次,在数 22 中出现 22 次,所以数字 2 在该范围内一共出现了 6 次。
2 个正整数 L 和 𝑅,之间用一个空格隔开。
数字 2 出现的次数。
输入: 2 100 输出:20
1≤L≤R≤100000。
P1656