2 条题解

  • 0
    @ 2024-1-6 19:38:22

    暴力解决这道题,它真的不是我用了整整一个半小时硬熬出来的<哭>

    #include<bits/stdc++.h>
    using namespace std;
    int a[10],nb[11];
    long long int n;
    void cs(int b,int ws,int syw)
    {
    	if(ws==1)
    	{
    		for(int i=1;i<=b;i++)
    		{
    			a[i]++;
    		}
    	}
    	if(ws==2)
    	{
    		a[nb[2]]+=nb[1];
    		for(int i=1;i<=b;i++)
    		{
    			for(int j=0;j<=9;j++)
    			{
    				if(i==j+1&&j!=0)a[j]+=10;
    				else
    				{
    				if(i==j)a[j]+=2;
    				else a[j]++;
    			}
    			}
    		}
    	}
    	if(ws==3)
    	{
    		a[nb[3]]+=nb[2]*10+nb[1];
    		if(nb[2]!=0)a[0]+=9;
    		for(int i=1;i<=b;i++)
    		{
    			for(int j=0;j<=9;j++)
    			{
    				if(i==j+1&&j!=0)a[j]+=119;
    				else
    				{
    				if(i==j&&i!=0)a[j]+=21;
    				else
    				{
    					if(j==0&&i==1)a[j]+=11;
    					else a[j]+=20;
    				}
    				
    			}
    		}
    	}
    }
    	if(ws==4)
    	{
    		a[nb[4]]+=nb[3]*100+nb[2]*10+nb[1];
    		if(nb[3]!=0)a[0]+=99+9;
    		for(int i=1;i<=b;i++)
    		{
    			for(int j=0;j<=9;j++)
    			{
    				if(i==j+1&&j!=0)a[j]+=1299;
    				else
    				{
    				if(i==j&&i!=0)a[j]+=301;
    				else
    				{
    					if(j==0&&i==1)a[j]+=192;
    					else a[j]+=300;
    				}
    				
    			}
    		}
    	}
    }
    	if(ws==5)
    	{
    		a[nb[5]]+=nb[4]*1000+nb[3]*100+nb[2]*10+nb[1];
    		if(nb[4]!=0)a[0]+=999+99+9;
    		for(int i=1;i<=b;i++)
    		{
    			for(int j=0;j<=9;j++)
    			{
    				if(i==j+1&&j!=0)a[j]+=13999;
    				else
    				{
    				if(i==j&&i!=0)a[j]+=4001;
    				else
    				{
    					if(j==0&&i==1)a[j]+=2893;
    					else a[j]+=4000;
    				}
    				
    			}
    		}
    	}
    }
    	if(ws==6)
    	{
    		a[nb[6]]+=nb[5]*10000+nb[4]*1000+nb[3]*100+nb[2]*10+nb[1];
    		if(nb[5]!=0)a[0]+=9999+999+99+9;
    		for(int i=1;i<=b;i++)
    		{
    			for(int j=0;j<=9;j++)
    			{
    				if(i==j+1&&j!=0)a[j]+=149999;
    				else
    				{
    				if(i==j&&i!=0)a[j]+=50001;
    				else
    				{
    					if(j==0&&i==1)a[j]+=38894;
    					else a[j]+=50000;
    				}
    				
    			}
    		}
    	}
    	}
    	if(ws==7)
    	{
    		a[nb[7]]+=nb[6]*100000+nb[5]*10000+nb[4]*1000+nb[3]*100+nb[2]*10+nb[1];
    		if(nb[6]!=0)a[0]+=99999+9999+999+99+9;
    		for(int i=1;i<=b;i++)
    		{
    			for(int j=0;j<=9;j++)
    			{
    				if(i==j+1&&j!=0)a[j]+=1599999;
    				else
    				{
    				if(i==j&&i!=0)a[j]+=600001;
    				else
    				{
    					if(j==0&&i==1)a[j]+=488895;
    					else a[j]+=600000;
    				}
    				
    			}
    		}
    	}
    		}
    	if(ws==8)
    	{
    		a[nb[8]]+=nb[7]*1000000+nb[6]*100000+nb[5]*10000+nb[4]*1000+nb[3]*100+nb[2]*10+nb[1];
    		if(nb[7]!=0)a[0]+=999999+99999+9999+999+99+9;
    		for(int i=1;i<=b;i++)
    		{
    			for(int j=0;j<=9;j++)
    			{
    				if(i==j+1&&j!=0)a[j]+=16999999;
    				else
    				{
    				if(i==j&&i!=0)a[j]+=7000001;
    				else
    				{
    					if(j==0&&i==1)a[j]+=5888896;
    					else a[j]+=7000000;
    				}
    				
    			}
    		}
    	}
    	}
    
    	if(ws==9)
    	{
    	a[nb[9]]+=nb[8]*10000000+nb[7]*1000000+nb[6]*100000+nb[5]*10000+nb[4]*1000+nb[3]*100+nb[2]*10+nb[1];
    		if(nb[7]!=0)a[0]+=9999999+999999+99999+9999+999+99+9;
    		for(int i=1;i<=b;i++)
    		{
    			for(int j=0;j<=9;j++)
    			{
    				if(i==j+1&&j!=0)a[j]+=179999999;
    				else
    				{
    				if(i==j&&i!=0)a[j]+=80000001;
    				else
    				{
    					if(j==0&&i==1)a[j]+=68888897;
    					else a[j]+=8000000;
    				}
    				
    			}
    		}
    	}
    }
    }
    int main()
    {
    	int k=0,ds,ds1=1;
    	int ws=1;
    	cin>>n;
    	ds=n;
    	while(ds!=0)
    	{
    		nb[ds1]=ds%10;
    		ds1++;
    		ds=ds/10;
    	}
    	while(n!=0)
    	{
    		
    		cs(n%10,ws,k);
    		ws++;
    		k=n%10;
    		n=n/10;
    	}
    	for(int i=0;i<=9;i++)
    	{
    		cout<<a[i]<<endl;
    	}
    }
    

    信息

    ID
    410
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    92
    已通过
    20
    上传者