第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
网友评论