1 条题解

  • 0
    @ 2025-8-24 23:13:58

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar what_can_I_do
    **

    搬运于2025-08-24 23:13:58,当前版本为作者最后更新于2025-04-20 21:06:27,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    传送门

    考虑写一份程序来求答案后输出该答案。

    先枚举 aabb,且保证 a×ba\times b 小于等于 10610^6。接下来枚举 a×ba\times b 在十进制下每一位数字并开一个桶记录 0099 出现的次数。然后枚举 aabb 在十进制下的每一位数字,枚举一位之后就将它在桶中的出现次数减一。最后判一下这个桶中 0099 每一位所表示的出现次数是否都为 00,如果是就给 a×ba\times b 打上标记。然后将 1110610^6 中所有打过标记的数字个数统计一下即可。

    最终求出答案为 590590

    CODE:

    答案求解程序:

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    bool v[1000010];
    int ans=0;
    int main()
    {
    	for(register ll a=1;a<=1e6;a++)
    		for(register ll b=1;a*b<=1e6;b++)
    		{
    			int cnt[20]={0};
    			ll t=a*b;
    			while(t) cnt[t%10]++,t/=10;
    			t=a;
    			while(t) cnt[t%10]--,t/=10;
    			t=b;
    			while(t) cnt[t%10]--,t/=10;
    			int f=1;
    			for(register int i=0;i<=9;i++) if(cnt[i]){f=0;break;}
    			if(f) v[a*b]=1;
    		}
    	for(register int i=1;i<=1e6;i++) ans+=v[i];
    	printf("%d\n",ans);
    	return 0;
    }
    

    答案输出程序:

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    int main()
    {
        puts("590");
    	return 0;
    }
    
    • 1

    信息

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