zoukankan      html  css  js  c++  java
  • 蓝桥杯软件类省赛 学习记录

    1、C++ STL标准模板库学习记录

     

     

    2、部分代码

    2021年4月第一题:卡片

    #include<iostream>
    #include<cstring>
    using namespace std;
    
    int main(){
        string str;
        int n=2021;
        int i=0;
        while(n>0){
            str = to_string(i);
            for(int j=0;j<str.length();j++){
                if(str[j]=='1')
                    {
                        n--;
                    }
            }
            cout<<i<<endl;
            cout<<n<<endl;
            i++;
        }
    
        return 0;
    }

    第二题:直线(答案来源:https://blog.csdn.net/wjinjie/article/details/116013954)

    #include <iostream>
    #include <vector>
    #include <set>
    using namespace std;
    
    struct point
    {
        int x; //横坐标
        int y; //纵坐标
    };
    
    int main()
    {
        vector<point> p;//存放所有点
        for (int i = 0; i <= 19; ++i)
            for (int j = 0; j <= 20; ++j)
                p.push_back({i, j});
    
        int len = p.size();
        set<pair<double, double>> lines; //存放斜直线y=kx+b
        for (int i = 0; i < len; ++i)
        {
            for (int j = 0; j < len; ++j)
            {
                if (p[i].x != p[j].x && p[i].y != p[j].y) // 统计所有斜直线的情况
                {
                    double k = (p[j].y - p[i].y) * 1.0 / (p[j].x - p[i].x);
                    double b = (p[j].y * (p[j].x - p[i].x) - (p[j].y - p[i].y) * p[j].x) * 1.0 / (p[j].x - p[i].x);
                    //double b = p[j].y - k * p[j].x; 不用这种方法,避免k造成精度爆炸
                    lines.insert(pair<double, double>(k, b));
                }
    
            }
        }
        cout << lines.size() + 20 + 21 << endl; // 总的直线=斜直线+横直线+竖直线
        return 0;
    }

    第六题:时间显示(答案来源:https://blog.csdn.net/wjinjie/article/details/116013954)

    #include<iostream>
    #include<sstream>
    #include<algorithm>
    using namespace std;
    
    int main()
    {
        long long num;
        cin >> num;
        long long time = num % (24 * 60 * 60 * 1000);
        //时钟 
        int HH = time / (60 * 60 * 1000);
        //分钟 
        int MM = time % (60 * 60 * 1000);
        MM = MM / 60000;
        //秒钟
        int SS = (time / 1000) % 60;
        printf("%02d:%02d:%02d", HH, MM, SS);
        return 0;
    }

    2020第十一届蓝桥杯C/C++ B组省赛 试题B 既约分数

    #include<iostream>
    using namespace std;
    int gcd(int a,int b)
    {
        if(a%b==0)
            return b;
        else
            return gcd(b,a%b);
    }
    int main(){
        int n = 0;
        for(int i=1;i<=2020;i++){
            for(int j=1;j<=2020;j++){
                if(gcd(i,j)==1){
                    n++;
                }
            }
        }
        cout<<n<<endl;
        return 0;
    }

    试题F 成绩统计

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int main()
    {
        int num;
        cin>>num;
        int fen;
        int jige=0;
        int youxiu=0;
        for(int i=0;i<num;i++){
            cin>>fen;
            if(fen<=100||fen>=0)
            {
                if(fen>=60){
                    jige++;
                    if(fen>=85){
                        youxiu++;
                    }
                }
            }else{
                i--;
            }
        }
        double you = (double)youxiu/num;
        double ji = (double)jige/num;
        you = you*100;
        ji = ji *100;
        printf("%.0f",ji);cout<<"%"<<endl;
        printf("%.0f",you);cout<<"%"<<endl;
    
        return 0;
    }

    试题 H: 等差数列(答案来源:https://blog.csdn.net/qq_44524918/article/details/113530469)

    #include <iostream>
    #include <algorithm>
    #include <set>
    using namespace std;
    
    const int max_n = 100005;
    int a[max_n], N, res = 0;
    
    int main(){
        cin >> N;
        set<int> d;
        
        for(int i=0; i<N; i++)
            cin >> a[i];
        
        sort(a, a+N); //将已知的数列从小到大排序
        
        for(int i=1; i<N; i++)//找出最小公差,set 可以自动排序,且元素唯一 
            d.insert(a[i] - a[i-1]);
        int t = *(d.begin());//d 的首元素即最小公差
    
        for(int i=a[0]; i<a[N-1]; i=i+t) res++; //算出最小项
        
        cout << res+1;
        return 0;
    }
  • 相关阅读:
    大文件上传
    http协议
    memcache通过hash取模算法,实现多服务器存取值
    页面静态化案例---一键生成详情页面静态化(全站静态化+局部动态)
    页面静态化案例---一键生成详情页面静态化(全站静态化)
    页面静态化案例---数据列表静态化
    LCD1602液晶显示模块的单片机驱动深入详解之硬件篇
    ANDROID开发之GC_CONCURRENT freed
    ANDROID开发之OOM:一张图片(BitMap)占用内存的计算 图片内存优化
    ANDROID开发 Fatal signal 11(SIGSEGV) at 0x问题解决方案
  • 原文地址:https://www.cnblogs.com/lx06/p/15763585.html
Copyright © 2011-2022 走看看