1 条题解

  • 0
    @ 2022-12-6 20:38:27
    #include<bits/stdc++.h>
    using namespace std;
    long long n,sum,ans,a[10],x,s;//为了防止sum和ans过大,这里采用long long
    int main(){
    	cin>>n;
    	for(;;)//题目说了ans<=10^18,所以必有答案
    	{
    		s=0;//s表示sum有0~9的数的个数,为什么每一次都要赋初值,是因为下面的数组没重复赋值
            x++;//x代表 1*n,2*n,3*n......不停累加
    		for(int i=1; i<=9; i++)
    		    if(a[i]>0)s++;//下标计数,if(a[i]>0)代表sum出现过0~9的某一个数
    		if(s==9){cout<<ans;break;}//s=9就代表0~9全都出现过
    		sum=n*x,ans=sum;
    		while(sum)
    		a[sum%10]++,sum/=10;//sum进行拆位,在a[0]~a[9]赋值,表示出现过
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    532
    时间
    1000ms
    内存
    128MiB
    难度
    10
    标签
    递交数
    6
    已通过
    5
    上传者