1 条题解

  • 0
    @ 2025-8-24 23:10:32

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar lukezang
    蒟蒻

    搬运于2025-08-24 23:10:32,当前版本为作者最后更新于2025-03-02 17:58:01,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    这个题目难度并不高,所以我蓝名写题解应该没有问题吧。

    本题基本思路就是循环题目描述中的步骤并判断是否重复,与之前重复就输出。

    那就上代码吧。

    #include<bits/stdc++.h>
    using namespace std;
    int a[105],g[10005];
    int main()
    {
    	long long n,b,cl,d,e,f,jc,bc;
    	string c;
        cin>>n>>cl;
        for(int i=1;i<=n;i++)
        {
            cin>>c;
            jc=c.size();//注意可能有前导零被删的数
            f=0;
            g[0]=0;
    	    for(int j=0;j<jc;j++)
    		{
    	        a[j]=c[j]-'0';
                g[0]+=a[j]*pow(10,jc-j-1);
    		}
            if(jc!=cl)
            {
                for(int j=jc;j<=cl;j++)
                {
                    a[j]=0;
                }
            }
            for(int k=1;k<=10000;k++)
            {
            	if(f==1) break;
    	        sort(a,a+cl);
    	        d=0;
    	        e=0;
    	        for(int j=0;j<cl;j++)
    	        {
    	        	d+=a[j]*pow(10,j);//由大至小排列
    	        	e+=a[j]*pow(10,cl-j-1);//由小至大排列
    			}
    			g[k]=d-e;
                for(int j=0;j<cl;j++)
    	        {
    	        	a[j]=g[k]/pow(10,j);
                    a[j]=a[j]%10;
    			}
    			for(int j=0;j<k;j++)
    			{
    				if(g[k]==g[j])
    				{
    					f=1;
                        cout<<g[k]<<endl;
    					break;
    				}
    			}
    		}
        }
    	return 0;
    }
    
    • 1

    信息

    ID
    11602
    时间
    1000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者