A.美丽的2
![在这里插入图片描述](https://img-blog.csdnimg.cn/884fb64b19ef455bae4384529cc99a26.png#pic_center)
#include<bits/stdc++.h>
using namespace std;
int check(int x)
{
while(x)
{
if(x%10==2) return true;
x/=10;
}
return false;
}
int main()
{
int res=0;
for(int i=1;i<=2020;i++)
{
if(check(i)) res++;
}
cout<<res;
return 0;
}
B.扩散
![在这里插入图片描述](https://img-blog.csdnimg.cn/4a49bcba9a4c4c3fad1d4497a8b046b4.png#pic_center)
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> PII;
const int N=6300;
int g[N][N];
int dist[N][N];
int dx[]={0,0,1,-1},dy[]={1,-1,0,0};
int bfs()
{
memset(dist,-1,sizeof dist);
queue<PII>q;
q.push({0+2100,0+2100});
q.push({2020+2100,11+2100});
q.push({11+2100,14+2100});
q.push({2000+2100,2000+2100});
dist[2100][2100]=0;
dist[4120][2111]=0;
dist[2111][2114]=0;
dist[4100][4100]=0;
int cnt=0;
while(q.size())
{
auto t=q.front();
q.pop();
if(dist[t.first][t.second]==2021) break;
cnt++;
for(int i=0;i<4;i++)
{
int nx=dx[i]+t.first,ny=dy[i]+t.second;
if(dist[nx][ny]==-1)
{
q.push({nx,ny});
dist[nx][ny]=dist[t.first][t.second]+1;
}
}
}
return cnt;
}
int main()
{
cout<<bfs();
return 0;
}
C.阶乘约数
![在这里插入图片描述](https://img-blog.csdnimg.cn/8466a097756640d0a735f991ba491578.png#pic_center)
#include<bits/stdc++.h>
using namespace std;
const int N=110;
unordered_map<int,int>a;
int main()
{
int cnt=0;
for(int i=1;i<=100;i++)
{
int x=i;
for(int j=2;j<=x/j;j++)
{
while(x%j==0)
{
a[j]++;
x/=j;
}
}
if(x>1) a[x]++;
}
long long res=1;
for(auto t:a)
{
int val=t.first,cnt=t.second;
res=res*(cnt+1);
}
cout<<res;
return 0;
}
D.本质上升序列
![在这里插入图片描述](https://img-blog.csdnimg.cn/5e0a6447783c480e98aa1bbeabf2d57f.png#pic_center)
#include<bits/stdc++.h>
using namespace std;
typedef pair<string,int>PSI;
string str="tocyjkdzcieoiodfpbgcncsrjbhmugdnojjddhllnofawllbhfiadgdcdjstemphmnjihecoapdjjrprrqnhgccevdarufmliqijgihhfgdcmxvicfauachlifhafpdccfseflcdgjncadfclvfmadvrnaaahahndsikzssoywakgnfjjaihtniptwoulxbaeqkqhfwl";
queue<PSI>q;
unordered_map<string,int>st;
int ans;
int main()
{
for(int i=0;i<200;i++)
{
string s="";
s+=str[i];
if(!st[s])
{
st[s]=1;
q.push({s,i});
ans++;
}
}
while(q.size())
{
auto t=q.front();
q.pop();
string s=t.first;
int pos=t.second;
for(int i=pos+1;i<200;i++)
{
if(str[i]>str[pos]&&!st[s+str[i]])
{
st[s+str[i]]=1;
q.push({s+str[i],i});
ans++;
}
}
}
cout<<ans;
return 0;
}
E.玩具蛇
![在这里插入图片描述](https://img-blog.csdnimg.cn/a99052a864ce43faae65e9b996a3fe73.png#pic_center)
#include<bits/stdc++.h>
using namespace std;
int ans;
int n=4;
int st[10][10];
int dx[]={0,0,1,-1},dy[]={1,-1,0,0};
void dfs(int x,int y,int u)
{
if(u==n*n)
{
ans++;
return ;
}
for(int i=0;i<4;i++)
{
int nx=dx[i]+x,ny=dy[i]+y;
if(!st[nx][ny]&&nx>=1&&nx<=n&&ny>=1&&ny<=n)
{
st[nx][ny]=1;
dfs(nx,ny,u+1);
st[nx][ny]=0;
}
}
}
int main()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
st[i][j]=1;
dfs(i,j,1);
st[i][j]=0;
}
}
cout<<ans;
return 0;
}