4 条题解
-
2
题目标签是搜索,其实打暴力也能过。由于数据范围小(),所以可以直接枚举i和j,计算需要的火柴数,再判断是否为n
Code:
#include<bits/stdc++.h> using namespace std; int n; int c[10]={6,2,5,5,4,5,6,3,7,6}; int cnt(int x){ if(x==0)return c[0]; int ans=0; while(x){ ans+=c[x%10]; x/=10; } return ans; } int main(){ cin>>n; n-=4; if(n<=4){ cout<<0; return 0; } int ans=0; for(int i=0;i<=1000;i++){ for(int j=0;j<=1000;j++){ int k=i+j; int t=cnt(i)+cnt(j)+cnt(k); if(t==n)ans++; } } cout<<ans; return 0; }
-
-2
#include<bits/stdc++.h> using namespace std; int main(){ int n; int f[10000]; f[0]=6;f[1]=2;f[2]=5;f[3]=5;f[4]=4; f[5]=5;f[6]=6;f[7]=3;f[8]=7;f[9]=6; for(int i=10; i<=99; i++) f[i]=f[i/10]+f[i%10]; for(int i=100; i<=999; i++) f[i]=f[i/100]+f[(i-(i/100)*100)/10]+f[i%10]; for(int i=1000; i<=9999; i++) f[i]=f[i/1000]+f[i-((i/1000)*1000)/100]+f[(i-(i/100)*100)/10]+f[i%10]; int total=0; cin>>n; for(int a=0; a<=1111; a++) for(int b=0; b<=1111; b++) { int c=a+b; if(f[a]+f[b]+f[c]==n-4)total++; } cout<<total<<endl; return 0; }
-
-2
#include
int num[11]={6,2,5,5,4,5,6,3,7,6};
int s(int x) { if(x==0)return num[0]; int ans=0; while(x!=0) { int t=x%10; ans+=num[t]; x/=10; } return ans; }
int main() { int n,total=0; scanf("%d",&n); for(int i=0;i<=1000;++i) { for(int j=0;j<=1000;++j) { if(s(i)+s(j)+s(i+j)+4==n) { ++total;
} } } printf("%d",total); return 0;
}
-
-3
#include
int num[11]={6,2,5,5,4,5,6,3,7,6};
int s(int x) { if(x==0)return num[0]; int ans=0; while(x!=0) { int t=x%10; ans+=num[t]; x/=10; } return ans; }
int main() { int n,total=0; scanf("%d",&n); for(int i=0;i<=1000;++i) { for(int j=0;j<=1000;++j) { if(s(i)+s(j)+s(i+j)+4==n) { ++total;
} } } printf("%d",total); return 0;
}
- 1
信息
- ID
- 5207
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- 递交数
- 120
- 已通过
- 60
- 上传者