P10024 「HCOI-R1」报名人数
drinktowind · · 个人记录
赛时唯一做出的题,果然还是我太菜了
题目大意
对于
求表示一个数各数位短竖线的和连续相同的数列的最大长度。
思路
第一想法直接暴力,求出每个数短竖线的和,然后贪心比较。
52分代码
#include<bits/stdc++.h>
using namespace std;
int a[20]={6,2,5,5,4,5,6,3,7,6};
int check(int x)
{
int k,ans=0;
while(x)
{
k=x%10;
x/=10;
ans+=a[k];
}
return ans;
}
int main()
{
int n,m,sum,k=1,mx=1;
cin>>n>>m;
sum=check(n);
for(int i=n+1;i<=m;i++)
{
if(check(i)==sum)
k++;
else{
sum=check(i);
mx=max(mx,k);
k=1;
}
}
cout<<mx;
return 0;
}
打表一下后并观察题目我发现只有
我们可以发现,在
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
bool f=0,flg=0;
int cnta=0,cntb=0,n,m;
cin>>n>>m;
for(int i=n;i<=m;i++)
{
if(i%10==2)
f=1;
else if(i%10==3&&f)
{
cout<<2;
return 0;
}
}
cout<<1;
return 0;
}
仔细观察题目,每个以
满分代码
#include<bits/stdc++.h>
#include<windows.h>
#define int long long
using namespace std;
bool f;
int main()
{
int n,m;
cin>>n>>m;
for(int i=100;i<=1e18;i*=10)
{
if(n%i<=3*i/10-1&&m%i>=3*i/10)
{
cout<<2;
return 0;
}
}
for(int i=n;i<=m;i++)
{
if(i%10==2)
f=1;
else if(i%10==3&&f)
{
cout<<2;
return 0;
}
}
cout<<1;
return 0;
}
完结撒花