美文网首页我用 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