概要

题目很简单。

T3 压位没开 $\texttt{LL}$ 痛失 $70pts$

痛失美丽的 U 盘

题目

T1

大水题,直接根据题意描述即可

#include<bits/stdc++.h>
using namespace std;
string s; 
int ss,ff,mm;
void f(int x)
{
    if(x<10)
    {
        cout<<"0"<<x;
    }
    else cout<<x;
}
int main()
{
    freopen("clock.in","r",stdin);
    freopen("clock.out","w",stdout);
    cin>>s;
    ss=(s[0]-48)*10+(s[1]-48);
    ff=(s[3]-48)*10+(s[4]-48);
    mm=(s[6]-48)*10+(s[7]-48);
    mm++;
    if(mm==60)
    {
        ff++;
        mm=0;
    }
    if(ff==60)
    {
        ss++;    
        ff=0;
    } 
    if(ss==24)
    {
        ss=0;
    }
    f(ss);
    cout<<":";
    f(ff);
    cout<<":";
    f(mm);
    cout<<"\n";
    return 0;
}

T2

$\texttt{DFS}$ 就可以过

老Q机子太快了

如果有更好方法请提出

#include<bits/stdc++.h>
using namespace std;
int n,a[10],b[10],ans=19198100;
bool visi[10],visj[10];
void dfs(int depth,int s,int cnt)
{
    if(depth>n)
    {
        ans=min(ans,cnt);
        return;
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            int tnc=max(cnt,abs(s+a[i]*b[j]));
            if(!visi[i] && !visj[j] && tnc<ans)
            {

                visi[i]=1;visj[j]=1;
                dfs(depth+1,s+a[i]*b[j],tnc);
                visi[i]=0;visj[j]=0;
            }
        }
    }
    return;
}
int main()
{
    freopen("hanger.in","r",stdin);
    freopen("hanger.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    for(int i=1;i<=n;i++)
    {
        cin>>b[i];
    }
    dfs(1,0,0);
    cout<<ans<<"\n";
    return 0;
}

T3

直接 $l$ 枚举到 $r$ 并 $\texttt{checker}$ 一下即可

#include<bits/stdc++.h>
#define int long long
using namespace std;
int l,r,ans;
int power[]={1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};
int checker(int x)
{
    int y=0;
    while(x)
    {
        y+=(power[x%10]);
        x/=10;
    }
    for(int i=0;i<=9;i++)
    {
        if(y/power[i]%10%2)
        {
            return 0;
        }
    }
    return 1;
}
int main()
{
    freopen("digits.in","r",stdin);
    freopen("digits.out","w",stdout);
    cin>>l>>r;
    for(int i=l;i<=r;i++)
    {
        ans+=checker(i);
    }
    cout<<ans<<"\n";
    return 0;
}

T4

字符串处理 $+$ 类似斐波那契数列(递推预处理一下)

如果有 m 或 w 则不存在

#include<bits/stdc++.h>
#define LL long long

using namespace std;
const LL MOD=1e9+7;
struct node
{
    int num;
    char val;
}a;
LL Fib[100010],ans=1;
int S;
string s;
bool flag=0;
int main()
{
    freopen("note.in","r",stdin);
    freopen("note.out","w",stdout);
    cin>>s;
    S=s.size();
    a.val='A';
    Fib[0]=1;
    Fib[1]=1;
    Fib[2]=2;
    for(int i=3;i<=S;i++)
    {
        Fib[i]=(Fib[i-1]+Fib[i-2])%MOD;
    }
    for(int i=0;i<S;i++)
    {
        if(s[i]=='n')
        {
            if(a.val=='n')
            {
                a.num++;
            }
            else
            {
                ans=ans*Fib[a.num]%MOD;
                a.val='n';
                a.num=1;
            }
        }
        else if(s[i]=='u')
        {
            if(a.val=='u')
            {
                a.num++;
            }
            else
            {
                ans=ans*Fib[a.num]%MOD;
                a.val='u';
                a.num=1;
            }
        }
        else if(s[i]=='w' || s[i]=='m')
        {
            flag=1;
            break;
        }
        else
        {
            ans=ans*Fib[a.num]%MOD;
            a.val='A';
            a.num=0;
        }
    }
    ans=ans*Fib[a.num]%MOD;
    if(flag) ans=0;
    cout<<ans<<"\n";
    return 0;
}
最后修改:2023 年 08 月 18 日
如果觉得我的文章对你有用,请随意赞赏