蛮力法解决,但是全超时了想着就是遍历,我感觉1最先用完所以判断位置只放了1(把其他都放上也可以),然后就是分解位数,应该是运算规模有点大了,反正总之,我是菜狗

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int a[10],j;
	for(int i=0;i<10;i++)
	{
		a[i]=2021;
	}
	while(a[1]!=0)
	{
		for(j=1;j<=9999;j++)
		{
			int n=j;
			while(n!=0)
			{
				int div=n%10;
				a[div]--;
				n/=10;
			}
		}
	}
	cout<<j<<endl;
    return 0;
}

在想,如果是char类型能分解然后判断吗,害,书到用时方恨少,我还是做菜狗吧

1 条评论

  • @ 2024-4-11 16:13:17

    不一定1先用完,哪一位用完都有可能,你以a[1]为判断条件的话,有可能a[1]在循环内部变成了负数,就死循环了,换一个思路,你可以判断当前减的那一位是否小于0了。记住不是等于零了,等于零也是满足题意的,必须是使用超过2021次了。

    • 1

    信息

    ID
    977
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    79
    已通过
    35
    上传者