1.国际博物馆日【算法赛】 - 蓝桥云课 (lanqiao.cn)
#include <iostream>
using namespace std;
int main()
{
cout<<"museum"<<endl;
return 0;
}
2.最小值取余【算法赛】 - 蓝桥云课 (lanqiao.cn)
贪心排个序就行了
void solve()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+1+n);
int x=0;
for(int i=1;i<=n;i++)
{
x=(x*10+a[i])%p;
}
cout<<x<<endl;
}
3.小蓝方程【算法赛】 - 蓝桥云课 (lanqiao.cn)
简单的分类讨论
只要看这个 a = a ∗ n a=a*n a=a∗n
当 n = 1 n=1 n=1时候 a a a可以为任意数
当 a = 0 a=0 a=0的时候 n n n可以是任意数
还有一个 0 , 0 0,0 0,0是特殊情况
所以答案就是 X + Y + 1 X+Y+1 X+Y+1
void solve()
{
cin>>x>>y;
cout<<(x+y)+1<<endl;
}
4.玩偶购买【算法赛】 - 蓝桥云课 (lanqiao.cn)
分类讨论不会
5.数学魔术家【算法赛】 - 蓝桥云课 (lanqiao.cn)
贪心:最大的就直接从大到小排个序输出,最小就从小到大输出,如果有前导 0 0 0就把 0 0 0放在第一个非 0 0 0数的后面即可
void solve()
{
string s;
cin>>s;
sort(s.begin(),s.end());
reverse(s.begin(),s.end());
cout<<s<<' ';
sort(s.begin(),s.end());
if(s[0]=='0')
{
int i=0;
while(s[i]=='0')i++;
cout<<s[i];
int j=i+1;
i=0;
while(s[i]=='0')cout<<s[i++];
for(j;j<s.size();j++)
cout<<s[j];
cout<<endl;
}
else
{
cout<<s<<endl;
}
}
6.矿石样本分析【算法赛】 - 蓝桥云课 (lanqiao.cn)
这题类似与leetcode的第一题两数之和,只要存下每个 a i a_i ai的下标 i i i,然后就判断枚举两个机器的出发点即可
void solve()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
cin>>a[i];
map<int,vector<int>>mp;
mp.clear();
for(int i=1;i<=n;i++)
mp[a[i]].push_back(i);
int res=0x3f3f3f3f;
for(int i=1;i<=n;i++)
{
if(mp[k-a[i]].size()==0)continue;
if(k-a[i]==a[i])continue;
for(auto x:mp[k-a[i]])
{
res=min(res,max(min(i,n-i+1),min(x,n-x+1)));
}
}
if(res==0x3f3f3f3f)
{
cout<<-1<<endl;
return;
}
cout<<res<<endl;
}
4.拔苗助长【算法赛】 - 蓝桥云课 (lanqiao.cn)
知识点:一个合数可以分解成若干个质因数。完全平方数的概念是 x 2 x^2 x2就是完全平方数
你可以让 h i h_i hi变成 h i ∗ p h_i*p hi∗p,其中 p p p是任意的质因数。所以我们把每个 h i h_i hi分解成若干个质因数,如果某个质因数的个数是奇数就答案+1
int n,k;
int a[N];
map<int,int>mp;
void divide(int n)
{
for(int i=2;i<=n/i;i++)
{
if(n%i==0)
{
int s=0;
while(n%i==0)
{
s++;
n=n/i;
}
mp[i]=s;
}
}
if(n>1)mp[n]++;
}
void solve()
{
cin>>n;
int res=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
mp.clear();
divide(a[i]);
for(auto x:mp)
if(x.second%2==1)res++;
}
cout<<res<<endl;
}