美文网首页我用 Linux程序员互联网科技
2018北京小学生程序设计友谊赛详细答案

2018北京小学生程序设计友谊赛详细答案

作者: 海天一树X | 来源:发表于2019-01-07 10:05 被阅读7次

    第1题 找平方数

    #include <iostream>
    #include <cmath>
    using namespace std;
    
    int main()
    {
        int n;
        cin >> n;
        int a[n];
        for(int i = 0; i < n; i++)
        {
            cin >> a[i];
            int root = sqrt(a[i]);
            if(root * root == a[i])
            {
                cout << a[i] << endl;
            }
        }
    
        return 0;
    }
    

    第2题 回文密码

    #include <iostream>
    using namespace std;
    
    bool isPalin(string s)
    {
        int len = s.size();
        int i = 0;
        int j = len - 1;
        while(i < j)
        {
            if(s[i] != s[j])
            {
                return false;
            }
            i++;
            j--;
        }
    
        return true;
    }
    
    int main()
    {
        string s;
    cin >> s;
    
        int len = s.size();
        int i = 0;
        if(isPalin(s))
        {
            i = 1;
        }
    
        while(i < len)
        {
            cout << s[i];
            i += 2;
        }
        cout << endl;
    
        return 0;
    }
    

    第3题 采购奖品

    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    struct goods
    {
        int cost;   // 单价
        int amount; // 库存数量
    };
    
    bool cmp(goods a, goods b)
    {
        return a.cost < b.cost;
    }
    
    int main()
    {
        int money, n;
        cin >> money >> n;
        goods g[n];
        int i = 0;
        for(; i < n; i++)
        {
            cin >> g[i].cost >> g[i].amount;
        }
    
        sort(g, g + n, cmp);
    
        int ans = 0;
        int mx = 0; // 最多可买多少个
        int cnt = 0;// 实际可买多少个
        i = 0;
        do
        {
            mx = money / g[i].cost;
            cnt = mx > g[i].amount ? g[i].amount : mx;
            money -= (cnt * g[i].cost); // 还剩下多少钱
            ans += cnt;
            i++;
        }while(mx > 0 && i < n);
    
        cout << ans << endl;
    
        return 0;
    }
    

    少儿编程答疑、算法答疑请加微信307591841或QQ307591841


    公众号.jpg

    相关文章

      网友评论

        本文标题:2018北京小学生程序设计友谊赛详细答案

        本文链接:https://www.haomeiwen.com/subject/vjvyrqtx.html