4 条题解

  • 2
    @ 2025-4-5 15:17:10

    题目标签是搜索,其实打暴力也能过。由于数据范围小(1n241 \le n \le 24),所以可以直接枚举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
      @ 2024-12-6 20:44:13

      #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
        @ 2024-12-3 12:30:03

        #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
          @ 2024-12-3 12:30:32

          #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
          上传者