2021省赛第一轮A组

2021省赛第一轮A组

A题

答案:3181

#include<bits/stdc++.h>
using namespace std;
int sum[109];
bool check(int x)
{
    while(x)
    {
        sum[x%10]++;
        if(sum[x%10]>2021)return false;
        x/=10;
    }
    return true;
}
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        if(!check(i))
        {
            cout<<i-1<<endl;
            break;
        }
    }
    for(int i=0;i<=9;i++)
    {
        cout<<sum[i]<<" ";
    }
    cout<<endl;
    return 0;
}

B题

答案:839

#include<bits/stdc++.h>
using namespace std;
int sum[30];
int main()
{
    int n;
    cin>>n;//21
    for(int i=1;i<=n;i++)
    {
        sum[i]=sum[i-1]+i;
    }
    cout<<sum[n]+sum[n-1]-1+(sum[n-1]+sum[n-2]-1)<<endl;
    return 0;
}

F题

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+9;
int a[109];
int dp[N];
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    memset(dp,-1,sizeof(dp));
    dp[0]=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=0;j<=1e5;j++)
        {
            if(dp[j]!=-1&&dp[j]!=i)
            {
                if(dp[j+a[i]]==-1)dp[j+a[i]]=i;
                if(dp[abs(j-a[i])]==-1)dp[abs(j-a[i])]=i;
            }
            
        }
    }
    int sum=0;
    for(int i=1;i<=1e5;i++)
    {
        if(dp[i]!=-1)
        {
            sum++;
        }
    }
    cout<<sum<<endl;
    return 0;
}

posted @ 2024-06-25 16:41  wlqtc  阅读(7)  评论(0)    收藏  举报