【蓝桥杯刷题训练营】day09-爱代码爱编程
1 找素数
#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int num) {
//2, 3质数单独做讨论
if(num == 2 || num == 3) return true;
//我们发现5以上的质数均在6两侧,但是注意6两侧的数不一定是质数
if(num % 6 != 1 && num % 6 != 5) return false;
for(int i = 5; i <= sqrt(num); i += 6) {
if(num % i == 0 || num % (i+2) == 0)
return false;
}
return true;
}
int main() {
int i = 2, cnt = 0;
while(true) {
if(isPrime(i)) cnt++;
if(cnt == 100002) {
cout << i << endl;
break;
}
i++;
}
return 0;
}
2 图书排列
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int a,b,c,d,e,f,g,h,i,m;
int count=0;
for(a=1;a<11;a++){
for(b=1;b<11;b++){
for(c=1;c<11;c++){
for(d=1;d<11;d++){
for(e=1;e<11;e++){
for(f=1;f<11;f++){
for(g=1;g<11;g++){
for(h=1;h<11;h++){
for(i=1;i<11;i++){
for(m=1;m<11;m++){
if(a+1!=b&&b+1!=c&&c+1!=d&&d+1!=e&&e+1!=f&&f+1!=g&&g+1!=h&&h+1!=i&&i+1!=m&&
a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=h&&a!=i&&a!=m&&
b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=h&&b!=i&&b!=m&&
c!=d&&c!=e&&c!=f&&c!=g&&c!=h&&c!=i&&c!=m&&
d!=e&&d!=f&&d!=g&&d!=h&&d!=i&&d!=m&&
e!=f&&e!=g&&e!=h&&e!=i&&e!=m&&
f!=g&&f!=h&&f!=i&&f!=m&&
g!=h&&g!=i&&g!=m&&
h!=i&&h!=m&&i!=m&&a-1!=b&&b-1!=c&&c-1!=d&&d-1!=e&&e-1!=f&&f-1!=g&&g-1!=h&&h-1!=i&&i-1!=m
){
//printf("%d%d%d%d%d%d%d%d%d%d\n",a,b,c,d,e,f,g,h,i,m);
count++;
}
}
}
}
}
}
}
}
}
}
}
printf("%d",count);
return 0;
}
只会采取暴力求解的方式,没有很好地思绪