1 solutions

  • 0
    @ 2024-12-31 15:24:57

    枚举(n^2)

    这个题我们可以直接使用一个函数来返回每个数的需要的火柴数目,然后我们对函数相加做一个判断即可。

    nn最大值为24,那么我们去除掉+=的4个,就只有20个,在去掉一个一位数最少为1,只有18个火柴棒,平均分配到两个数的话,必定是一个4位数(因为一定有和的位数大于等于两个加数的最大值),那么需要最少的火柴棒的四位数为1111,一共需要8根,结果为1111+1=1112是大于24的,那么超过1111的火柴数目的总的火柴棒的数目都是大于24的,所以我们只需要枚举到1111即可。

    #include<bits/stdc++.h>
    using namespace std;
    int nums[10]={6,2,5,5,4,5,6,3,7,6}; //每个数字需要多少个火柴棒 
    int cal(int x) //每个数需要的火柴数目 
    {
    	int res=0;
    	do{
    	    res+=nums[x%10];
    		x/=10;
    	}while(x);
    	return res;
    }
    int main()
    {
    	int res=0;
    	int n;
    	cin>>n;
    	for(int i=0;i<=1111;i++) //枚举所有可能的数 
    	{
    	    for(int j=i;j<=1111;j++)
    	    {
    			if(cal(i)+cal(j)+cal(i+j)+4==n)
    			{
    				res++;
    				if(i!=j)
    				{
    				    res++;
    				}
    			}
    	    }
    	    
    	}
    	cout<<res<<endl;
    	return 0; 
    }
    
    • 1

    Information

    ID
    459
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    10
    Tags
    # Submissions
    1
    Accepted
    1
    Uploaded By