模板题,但过不了
查看原帖
模板题,但过不了
1503208
convie楼主2025/1/2 10:22

在其他地方上学的,那里过的了,但在这只能过前三个,玄关求调

#include<iostream>
#include<cstring>
using namespace std;
#define MAXN 10010
int num[MAXN];
int getn(int l,int r){
    int ans=0;
    for(int i=l;i>=r;i--)
    ans=ans*10+num[i];
    return ans;
}
int pow10(int n){
    int ans=1;
    while(n--)ans*=10;
    return ans;
}
int work(int n,int x){
    if(!n)return 0;
    int ans=0,len=0;
    while(n){
        num[++len]=n%10;
        n/=10;
    }
    for(int i=len-!x;i>0;i--){
        if(i<len){
            if(x)ans+=getn(len,i+1)*pow10(i-1);
            else ans+=(getn(len,i+1)-1)*pow10(i-1);
        }
        if(num[i]==x)ans+=getn(i-1,1)+1;
        else if(num[i]>x)ans+=pow10(i-1);
        else ans+=0;
    }
    return ans;
}
int main(){
    int a,b;
    cin>>a>>b;
        for(int i=0;i<=9;i++)
        cout<<(long long)(work(b,i)-work(a-1,i))<<" ";
    return 0;
}
2025/1/2 10:22
加载中...