蓝桥杯2017第八届 B组省赛

第一题用了text文本洗数据和excel

第二题用的判断素数和穷举 开始想象公差太小 没出来结果……代码附上

#include
#include
#include
using namespace std;
bool isPrime(int n){
    if(n<=1)return false;
    int sqr=(int)sqrt(n*1.0);
    for(int i=2;i<=sqr;i++){
        if(n%i==0)return false;
    }
    return true;
}
int main(){
    for(int d=2;d<300;d++)
    {
        for(int i=2;i<100000;i++){
            if(isPrime(i)&&isPrime(i+2*d)&&isPrime(i+3*d)&&isPrime(i+4*d)&&isPrime(i+5*d)&&isPrime(i+6*d)&&isPrime(i+7*d)&&isPrime(i+8*d)&&isPrime(i+9*d))
            {
                cout<

遇到的一个初始化可爱函数(名称模仿武忠祥老师定积分定义计算讲到的可爱因子,1/n和武老师简直太优秀) 这样就不担心0和数据0会撞了

C/C++语言初始化函数。作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作。

void *memset(void *s, int ch, size_t n);

函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。

第六题说是动态规划……我的方法就是把自己想象成代码跑一圈能做出来

第七题废了老鼻子劲 介绍下面用到的几个好用的函数

swap()方便交换数据,省了temp,需要加头文件algorithm
printf("%02d-%02d-%02d\n",b[0],b[1],b[2]);
printf是个好东西啊 cin cout太不适合比赛了 上面的是要求限制整数输出两位少的补0
printf("%.2f",profit);之前用过是保留两位小数


printf.JPG

pre_permutation();用do{}whitle();会输出全排列 开始理解错题意就用了这个……至今记不住permutation这个单词……哭了 考咋办 需要加头文件algorithm
看别人用了栈和队列啥的……我就算了 可能是洗数据洗多了 只会留下有用的……
一直想用三个string 拼接 我可能总在做梦……改天再实现吧我们下一题

#include
#include
using namespace std;
int main(){
    int a[6];
    int b[3];
    int m=0,n=0;
    for(int i=0;i<8;i++){
        
        int c=getchar();
        if(c=='/')continue;
        a[m]=c-48;
        m++;
    }
    for(int i=0;i<3;i++){
        
        b[i]=a[n]*10+a[n+1];
        n+=2;
    }
    int i=1;
    while(i<=3)
    {
        if(i==2)
        {
            swap(b[0],b[2]);
            swap(b[1],b[2]);
        }
        else if(i==3)
        {

            swap(b[1],b[2]);
        }
        
        int m=b[0]*10000+b[1]*100+b[2];
    
        if(m>=600101)
        {
        printf("19%02d-%02d-%02d\n",b[0],b[1],b[2]);
        }
        if(m<=591231)
        {
        printf("20%02d-%02d-%02d\n",b[0],b[1],b[2]);        
        }
        i++;
    
    }
    return 0;
} 

第九题是个二分 我不是很熟 参考一下答案 带那么多头文件老哥真的吓死我了都 然后删除了也可以编译……没用的话就别加了呗怪恐怖
换了一个别人的,一会儿等学完了背包再自己写写:

#include
#include
using namespace std;
int n,k,h[100010],w[100010];
bool solve(int mid) // 传递参数:最大快数mid 
{
    int res=0,a,b,i;
    for(i=0;i=k)
        return true;
    return false;
}
int main()
{
    int i,low,high;
    while(scanf("%d%d",&n,&k)!=EOF)
    {
        low=1;
        high=10000;
        for(i=0;i

第十题的思想是前缀和思想……这个起名我真不想说啥……就……前缀我就想到被二叉树支配的恐惧就觉得很难

查了之后我简单解释下:倒不如说成叠加和,类似小时候玩的摆火车,我的筹码是我身后的全部,就是一2,6,7,9,13……这种序列,如果你想求某个[n,m]区间所有数列的和,那我们直接先从头求到尾,上面数列变成2,8,15,24,37……要求上面7~13,我们直接用37-15就好 算法笔记有讲我翻不到了了,刚吃了两笼小笼包现在有杯玉米汁多的话真的太幸福了~

#include
#include
using namespace std;
int main(){
    int N;
    int K;
    int a[100010];
    cin>>N;
    cin>>K;
for(int i=0;i

你可能感兴趣的:(蓝桥杯2017第八届 B组省赛)