蓝桥杯
前言
4月份就开始蓝桥杯省赛了,开始准备蓝桥杯了,冲冲冲
一、找规律求解
该题目涉及了3个变量,层数(a),煤球个数(b),煤球总数©
可以看到一个规律,每一层的煤球个数都是这一层加上上一层的煤球个数组成,比如6=第三层+3个,10=第四层+6个
所以 num[i]=num[i-1]+a;
#include<stdio.h>
int main()
{
int a,b=0,c=0;
for(a=1;a<=100;a++)
{
b=b+a;
c=b+c;
}
printf("%d",c);
return 0;
}
二、枚举
枚举通常用于对问题没有思路,或者短时间内想不出更好的办法解决,使用枚举增加得分率。但并不是所有的题目都能枚举。
什么是素数呢,素数就是只能写成1乘以他本身的数。
/*从N开始递减查找最大的素数,查找到就结束循环 */
#include<stdio.h>
int main()
{
int a,n;
scanf("%d",&n);
do
{
for(a=2;a<n;a++)
{
if(n%a==0)
{
n--;
a=2;
}
}
}while(a!=n);
printf("%d\n",n);
return 0;
}
一共有4个整型变量,写一个四层for循环,遍历每一个变量的每一种组合
然后确定变量的范围a=[2,N]
b=[2,a)
c=[b,a)
d=[c,a)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c,d,n;
cin>>n;
for(int a=2;a<=n;a++)
{for(b=2;b<a;b++)
{
for(c=b;c<a;c++)
{
for(d=c;d<a;d++)
{
if(a*a*a==b*b*b+c*c*c+d*d*d)
cout<<"Cube="<<a<<","<<"Triple="<<b<<","<<c<<","<<d<<endl;
}
}
}
}
}
3个变量,x、y、z分别代表公鸡母鸡小鸡
3个变量3层for循环
关系:
x+y+z=100
5x+3y3z/3=100
x的取值【0,20】
y的取值【0,33】
z的取值【0,100-x-y】
int main()
{
int x,y,z;
for(x=0;x<=20;x++)
{for(y=0;y A H<=33;y++)
{z=100-x-y;
if(5*x+3*y+z/3.0==100)
{
printf("公鸡%d母鸡%d小鸡%d\n",x,y,z);
}
}
}
}
总结
枚举的要点:
1、确定变量的个数、找出条件
2、确定变量的取值范围、尽可能排除不可能的情况
3、确定遍历的顺序
4、注意细节(边界、精度转换)
评论(0)
您还未登录,请登录后发表或查看评论