#include<bits/stdc++.h>
using namespace std;
int vis[10005];
int need[10]={6,2,5,5,4,5,6,3,7,6};
int f(int k){
//if(k==0)return 6;
int tot=0;
if(vis[k]!=0) return vis[k];
while(k){
tot+=need[k%10];
k/=10;
}
return vis[k]=tot;
}
int main(){
int n;
int tot=0;
vis[0]=6;
cin>>n;
for(register int i=0;i<=2000;i++){
for(register int j=0;j<=2000;j++){
// if(i==1&&j==0) cout<<f(i)<<" "<<f(j)<<" "<<f(i+j)<<"\n";
// if(i==0&&j==1) cout<<f(i)<<" "<<f(j)<<" "<<f(i+j)<<"\n";
if(f(i)+f(j)+f(i+j)+4==n){
tot++;
}
}
cout<<f(0)<<"\n";
}
cout<<tot;
return 0;
}
为什么这个时候f(0)会变啊?
把函数f()中的那个注释去掉就不是乱码了???