标签:没有 情况 bsp 不可 https main str image ++
本来想着打表来,然后发现自己算不出来,AC代码造福一下人类,代码帮你表 nice
0~12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
0 | 1 | 2 | 8 | 9 | 6 | 9 | 29 | 39 | 38 | 65 | 88 | 128 |
还好我没有打表QWQ
说一下正解吧
首先存一下摆每个0~9数字需要多少根棍(拿走不客气)
a [ i ] 表示摆出数字 i 需要多少根火柴
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
6 | 2 | 5 | 5 | 4 | 5 | 6 | 3 | 7 | 6 |
Ps:
你可以要求电脑继续帮你算,因为摆一个数字,火柴棒数不可能为0,所以摆出这个数字所需火柴棒数就等于摆出它各位数字和十位数字火柴棒数之和
即
然后for循环枚举
(1)两层for循环枚举 i j 不相等的情况
(2)一层for循环枚举 i j 相等的情况
f [ i ] 表示用 i 根火柴 可以摆出多少个式子
每次枚举一个式子,对应的
不要忘了运算符号
提醒
for循环啊,i j 我大概枚举到了1000 ,为了AC多枚举没关系,QWQ
代码
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<string> using namespace std; int n,cnt; int a[10000]={6,2,5,5,4,5, 6,3,7,6,8 },f[100000]; int main() { scanf("%d",&n); for(int i=0;i<=1000;i++) for(int j=0;j<=1000;j++) { if(a[i]==0) a[i]=a[i/10]+a[i%10]; if(a[j]==0) a[j]=a[j/10]+a[j%10]; if(i!=j) { if((i+j)>10&&a[i+j]==0) a[i+j]=a[(i+j)/10]+a[(i+j)%10]; f[a[i]+a[j]+a[i+j]+4]++; } } for(int i=0;i<=1000;i++) { if(a[i]==0) a[i]=a[i/10]+a[i%10]; if((i*2)>10&&a[i*2]==0) a[i*2]=a[(i*2)/10]+a[(i*2)%10]; f[a[i]*2+a[i*2]+4]++; } for(int i=0;i<=24;i++) printf("%d\n",f[i]); return 0; }
标签:没有 情况 bsp 不可 https main str image ++
原文地址:https://www.cnblogs.com/xiaoyezi-wink/p/10964488.html