1443:卡片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int p[20],pd=0,cnt=0;
void check(int x)
{
while(x)
{
int xx=x%10;
p[xx]--;
if(p[xx]<0)pd=1;
x/=10;
}
}
int main()
{
for(int i=0;i<=9;i++)p[i]=2021;
while(pd==0)
{
cnt++;
check(cnt);
}
printf("%d",--cnt);
}

1445:空间

1
2
3
4
5
6
7
8
9
10
11
12
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
long long mb ;//256mb
long long in32 = 32;
int main()
{
mb = 1LL*256*1024*1024*8;
printf("%lld",mb/in32);
}

1463:货物摆放

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <cstdio>
#include <cstring>
#include <algorithm>
#define ll long long
using namespace std;
long long n=2021041820210418;
ll c[1000000],cnt=0,ans=0;;
int main()
{
for(int i=1;i<=sqrt(n);i++)
{
if(n%i==0)
{
cnt++;
c[cnt]=i;
}
}
for(int i=1;i<=cnt;i++)
{
for(int j=i;j<=cnt;j++)
{
ll cc=c[i]*c[j];
if(n%cc==0)//判断三条边的大小 c[i]<=c[j]<=cc
{
if(n/cc<c[j])continue;
if(n/cc==c[j])
{
if(n/cc==c[i])ans++;//c[i]==c[j]==cc
ans+=3;//c[j]==cc
continue;
}
if(c[i]==c[j])
{
ans+=3;continue;//c[i]==c[j]
}
ans+=6;//3!=6
}
}
}
printf("%lld",ans);
}

553.跳跃

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n,m,a[109][109],dp[109][109];
int kk(int x,int y)
{
int aa=-1e9;
for(int i=max(1,x-3);i<=x;i++)
{
for(int j=max(1,y-3);j<=y;j++)
{
if(x+y-i-j>0)
if(x+y-i-j<=3)
aa=max(aa,dp[i][j]);
}
}
if(aa==-1e9)aa=0;
return aa;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
scanf("%d",&a[i][j]);
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
dp[i][j]=kk(i,j)+a[i][j];
}
}
printf("%d",dp[n][m]);
}