比赛 2022级DP专题练习赛4 评测结果 AAAAAAAAAA
题目名称 数字统计 最终得分 100
用户昵称 nick 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2023-02-20 20:33:36
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
unsigned long long n,ans[5][1005],a,b,m=1,q;
int t,x;
int main()
{
	freopen("countzj.in","r",stdin);
	freopen("countzj.out","w",stdout);
    cin>>q>>n;
    q-=1;
    for(int t=0; t<=9; t++)
	{
        x=t;
        m=1;
        while(m<=q)
		{
            long long a=q/(m*10),b=q/m%10,c=q%m;
            if(x)
			{
                if(b>x) ans[2][t]+=(a+1)*m;
                if(b==x) ans[2][t]+=a*m+c+1;
                if(b<x) ans[2][t]+=a*m;
            }
            else
			{
                if(b) ans[2][t]+=a*m;
                else ans[2][t]+=(a-1)*m+c+1;
            }
            m*=10;
        }
    }
    for(int t=0; t<=9; t++)
	{
        x=t;
        m=1;
        while(m<=n)
		{
            long long a=n/(m*10),b=n/m%10,c=n%m;
            if(x)
			{
                if(b>x) ans[1][t]+=(a+1)*m;
                if(b==x) ans[1][t]+=a*m+c+1;
                if(b<x) ans[1][t]+=a*m;
            } else
			{
                if(b) ans[1][t]+=a*m;
                else ans[1][t]+=(a-1)*m+c+1;
            }
            m*=10;
        }
    }
    for(int i=0; i<=9; i++)
        cout<<ans[1][i]-ans[2][i]<<" ";
    return 0;
}