样例过但屏幕红温求调
查看原帖
样例过但屏幕红温求调
920938
XingChen_MoNian楼主2025/1/22 21:04

听取WA声一片

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstring>
#define int long long
using namespace std;
typedef long long ll;
inline ll read(){
    ll f=1,sum=0;char c=getchar();
    while(!isdigit(c)) {if(c=='-') f=-1;c=getchar();}
    while(isdigit(c)) {sum=sum*10+c-'0';c=getchar();}
    return sum*f;
}
int a[20],dp[20][20];
int dfs(int pos,int num,int ans,bool flag1,bool flag2){
    if(!flag1 && !flag2 && dp[pos][ans]!=-1) return dp[pos][ans];
    if(pos==0) return ans;
    int l=0,r=9;
    if(flag1) r=a[pos];
    int tot=0;
    for(int i=l;i<=r;i++){
        tot+=dfs(pos-1,num,ans+(i==num && !(i==0 && flag2)),(flag1 && i==r),(flag2 && i==l));
    }
    if(!flag1 && !flag2) dp[pos][ans]=tot;
    return tot;
}
int sol(int r,int i){
    memset(a,0,sizeof(a));
    int id=0;
    while(r){
        a[++id]=r%10;
        r/=10;
    }
    return dfs(id+1,i,0,1,1);
}
signed main(){
    int l,r;
    cin>>l>>r;
    for(int i=0;i<=9;i++){
        memset(dp,-1,sizeof(dp));
        int ans=sol(r,i)-sol(l-1,r);
        cout<<ans<<" ";
    }
    return 0;
}

给关注

2025/1/22 21:04
加载中...