刚刚拿到题目感觉非常容易,第一次提交,发现把数据写错了,6是6根火柴,我写的5根。第二次提交我发现题目不止是个位的运算,还可以十位,百位。。第三次提交,AC了,不过效率太慢了,代码如下:
#include <stdio.h>
int num[10] = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6};
//数据写错了
int count(int n)
{
int t = 0;
if(n == 0){
t = num[0];
}
while(n){
t += num[n % 10];
n /= 10;
}
return t;
}
int main(void)
{
int n;
int i, j;
int ans = 0;
scanf("%d", &n);
for(i = 0; i <= 2000; i++){
for(j = 0; j <= 2000; j++){
if(count(i) + count(j) + count(i + j) + 4 == n){
ans++;
}
}
}
printf("%d\n", ans);
return 0;
}
后来看到七妹的代码,发现自己的代码太破了,本来我是想用数组记录一下的,后来发现这都不用。,修改后的代码如下:
#include <stdio.h>
int num[5001] = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6};
//数据写错了
int main(void)
{
int n;
int i, j;
int ans = 0;
scanf("%d", &n);
for(i = 10; i <= 5000; i++){
num[i] = num[i / 10] + num[i % 10];
}
for(i = 0; i <= 5000; i++){
for(j = 0; j <= 5000; j++){
if(i + j <= 5000 && num[i] + num[j] + num[i + j] + 4 == n){
ans++;
}
}
}
printf("%d\n", ans);
return 0;
}