1 solutions
-
0
枚举(n^2)
这个题我们可以直接使用一个函数来返回每个数的需要的火柴数目,然后我们对函数相加做一个判断即可。
最大值为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