1. 程式人生 > >P1149 火柴棒等式

P1149 火柴棒等式

bsp -s 整數 輸入輸出格式 wid strong noip提高組 height out

P1149 火柴棒等式

    • 4.6K通過
    • 8.6K提交
  • 題目提供者該用戶不存在
  • 標簽 NOIp提高組 2008 雲端
  • 難度 普及-
  • 時空限制 1s / 128MB

題目描述

給你n根火柴棍,你可以拼出多少個形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整數(若該數非零,則最高位不能是0)

。用火柴棍拼數字0-9的拼法如圖所示:

技術分享

註意:

  1. 加號與等號各自需要兩根火柴棍

  2. 如果A≠B,則A+B=C與B+A=C視為不同的等式(A、B、C>=0)

  3. n根火柴棍必須全部用上

輸入輸出格式

輸入格式:

輸入文件matches.in共一行,又一個整數n(n<=24)。

輸出格式:

輸出文件matches.out共一行,表示能拼成的不同等式的數目。

輸入輸出樣例

輸入樣例#1:
樣例輸入1:
14
樣例輸入2:
18
輸出樣例#1:
樣例輸出1:
2
樣例輸出2:
9

說明

【輸入輸出樣例1解釋】

2個等式為0+1=1和1+0=1。

【輸入輸出樣例2解釋】

9個等式為:

0+4=4
0+11=11
1+10=11
2+2=4
2+7=9
4+0=4
7+2=9
10+1=11
11+0=11
 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
5 int a[2000]; 6 a[0]=6;a[1]=2;a[2]=5;a[3]=5;a[4]=4;a[5]=5;a[6]=6;a[7]=3;a[8]=7;a[9]=6; 7 for(int i=10;i<=1999;i++) 8 { 9 a[i]=a[i/10]+a[i%10]; 10 } 11 int n,sum=0; 12 cin>>n; 13 n-=4; 14 for(int i=0;i<=999;i++) 15 for(int j=0;j<=999;j++) 16 {
17 if(a[i]+a[j]+a[i+j]==n) 18 { 19 sum++; 20 } 21 } 22 cout<<sum<<endl; 23 return 0; 24 }

寫了一下正解,然後搞了一下,打了個表,畢竟n<=24不能枉費了出題人的zz,不發了

 

P1149 火柴棒等式