前言
这是第一次打比赛,写个题解记录一下(虽然会的也不多)
A.空间
答案:67108864。
题解:就是简单的25610241024/4,32位二进制整数也就是4个字节。但是比赛的时候把1024忘记搞成了1000,直接去世。
B.卡片
答案:3181.
代码如下:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main(void)
{
int a[10];//定义计数器
memset(a,0,sizeof(a));//计数器清0
for(int i=1;;i++)
{
int x=i;
while(x)
{
a[x%10]++;
x=x/10;
}//统计每个数字出现的次数
int q=0;
for(int j=0;j<10;j++)
{
if(a[j]==2021)
{
q=i;
break;
}
}
if(q==i)
{
cout<<i;
break;
}//如果已经找到了等于2021的数,退出循环,输出最好的那个数
}
return 0;
}
题解:暴力就完事了。
C.直线
答案:待补。
代码如下:
待补充
题解:在写的时候找规律发现是矩形的长+宽然后再加上矩形内包含的所有长方形和正形个数乘以2,然后就在那里统计长方形和正方形的个数。但是比赛完和朋友交流才发现我这个作法可能俩个正方形或者长方形的对角线在同一直线上,所有算出来的应该会偏大。
D.货物摆放
答案:2430。
代码如下:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main(void)
{
ll n=2021041820210418;
ll a[10005],k=0;
for(int i=1;i<=sqrt(n);i++)
{
if(n%i==0)
{
a[k++]=n/i;
a[k++]=i;
}
}// 分解质因数.
int cot=0;
for(int i=0;i<k;i++)
{
for(int j=0;j<k;j++)
{
for(int z=0;z<k;z++)
{
if(a[i]*a[j]*a[z]==n)
{
cot++;
}//暴力求解
}
}
}
cout<<cot;
return 0;
}
题解:
E.路径
答案:待补充。
代码如下:
待补充
题解:
F.时间显示
代码如下:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main(void)
{
ll n;
cin>>n;
n=n/1000;
n=n%(24*60*60);
printf("%02lld:%02lld:%02lld",n/3600,(n-n/3600*3600)/60,(n-n/3600*3600)-(n-n/3600*3600)/60*60);
return 0;
}
G.砝码称重
代码如下:
待补充
H.杨辉三角形
代码如下:
待补充
I.双向排序
代码如下:
待补充
J.括号序列
代码如下:
待补充