【基礎練習】【搜索/枚舉】codevs1168 火柴棒等式題解

題目來自NOIP2008

題目描述 Description

給你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根火柴棍必須全部用上

輸入描述 Input Description

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

輸出描述 Output Description

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

樣例輸入 Sample Input

樣例1:

14

 

樣例2:

18

樣例輸出 Sample Output

樣例1:

2

 

樣例2:

9

數據範圍及提示 Data Size & Hint

【輸入輸出樣例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

囧···這題目數據規模太小了,於是掉以輕心沒考慮兩位數加數的情況···

後來連表都懶得弄了,題解裏拖了一個表就交了= =

枚舉而已 你會發現每個數字的火柴數不能超過10

代碼:

//codevs1168 »ð²ñ°ôµÈʽ ËÑË÷ NOIP2008
//copyright by ametake
#include
#include
#include
using namespace std;

const int a[] = { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 29 , 30 , 31 , 32 , 33 , 34 , 35 , 36 , 37 , 39 , 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 59 , 61 , 62 , 63 , 64 , 65 , 67 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 81 , 84 , 87 , 91 , 92 , 93 , 94 , 95 , 97 , 101 , 107 , 110 , 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 121 , 124 , 127 , 131 , 134 , 137 , 141 , 142 , 143 , 144 , 145 , 147 , 151 , 154 , 157 , 161 , 167 , 170 , 171 , 172 , 173 , 174 , 175 , 176 , 177 , 179 , 181 , 191 , 197 , 211 , 214 , 217 , 241 , 271 , 277 , 311 , 314 , 317 , 341 , 371 , 377 , 411 , 412 , 413 , 414 , 415 , 417 , 421 , 431 , 441 , 447 , 451 , 471 , 474 , 477 , 511 , 514 , 517 , 541 , 571 , 577 , 611 , 617 , 671 , 701 , 710 , 711 , 712 , 713 , 714 , 715 , 716 , 717 , 719 , 721 , 727 , 731 , 737 , 741 , 744 , 747 , 751 , 757 , 761 , 771 , 772 , 773 , 774 , 775 , 777 , 791 , 811 , 911 , 917 , 971 , 1111 , 1112 , 1113 , 1114 , 1115 , 1117 , 1121 , 1131 , 1141 , 1147 , 1151 , 1171 , 1174 , 1177 , 1211 , 1311 , 1411 , 1417 , 1471 , 1511 , 1711 , 1714 , 1717 , 1741 , 1771 , 1777 , 2111 , 3111 , 4111 , 4117 , 4171 , 4711 , 5111 , 7111 , 7114 , 7117 , 7141 , 7171 , 7177 , 7411 , 7711 , 7717 , 7771 , 11111 , 11117 , 11171 , 11711 , 17111 , 71111 };
const int b[] = { 6 , 2 , 5 , 5 , 4 , 5 , 6 , 3 , 7 , 6 , 8 , 4 , 7 , 7 , 6 , 7 , 8 , 5 , 9 , 8 , 11 , 7 , 10 , 10 , 9 , 10 , 11 , 8 , 11 , 11 , 7 , 10 , 10 , 9 , 10 , 11 , 8 , 11 , 10 , 6 , 9 , 9 , 8 , 9 , 10 , 7 , 11 , 10 , 11 , 7 , 10 , 10 , 9 , 10 , 11 , 8 , 11 , 8 , 11 , 11 , 10 , 11 , 9 , 9 , 5 , 8 , 8 , 7 , 8 , 9 , 6 , 10 , 9 , 9 , 11 , 10 , 8 , 11 , 11 , 10 , 11 , 9 , 10 , 11 , 10 , 6 , 9 , 9 , 8 , 9 , 10 , 7 , 11 , 10 , 9 , 11 , 10 , 9 , 11 , 10 , 8 , 11 , 11 , 10 , 11 , 9 , 9 , 11 , 10 , 10 , 11 , 11 , 7 , 10 , 10 , 9 , 10 , 11 , 8 , 11 , 11 , 10 , 11 , 9 , 11 , 10 , 11 , 10 , 11 , 9 , 11 , 10 , 11 , 10 , 11 , 8 , 11 , 11 , 10 , 11 , 9 , 11 , 11 , 10 , 11 , 11 , 9 , 11 , 10 , 9 , 11 , 10 , 11 , 10 , 11 , 10 , 11 , 11 , 11 , 11 , 7 , 10 , 10 , 9 , 10 , 11 , 8 , 11 , 10 , 11 , 10 , 11 , 9 , 11 , 10 , 10 , 11 , 11 , 8 , 11 , 11 , 10 , 11 , 9 , 11 , 11 , 10 , 11 , 11 , 8 , 11 , 11 , 10 , 11 , 9 , 11 , 11 , 10 , 11 , 11 , 9 , 11 , 10 , 11 , 11 , 10 , 11 , 11 , 11 , 9 , 11 , 10 , 11 , 10 , 11 , 11 , 11 , 10 , 11 , 11 , 11 , 11 , 9 , 11 , 10 , 11 , 10 , 11 , 11 , 10 , 11 , 11 , 10 , 11 , 11 , 11 , 11 , 11 };
int n;
int ans=0;

int main()
{
    scanf("%d",&n);
    n-=4;
    if (n<=9)
    {
        if (n==9) printf("1\n");
        else printf("0\n");
        return 0; 
    }
    for (int i=0;i<238;i++)
    {
        for (int j=i;j<238;j++)
        {
            for (int k=0;k<238;k++)
            {
                if(a[i]+a[j]==a[k]&&b[i]+b[j]+b[k]== n)
                       ans+=(1 +(i!=j));
            }
        }
    }
    printf("%d\n",ans);
    return 0;
}
我很喜歡新版code的顯示風格 有點像rainbow又不一樣

但是不知爲啥顯示到博客上又老樣子了···

下面這句是因爲今天運動會就想到了 爲我們班兩位5000米勇士加加油 十里長征 輝煌與榮耀同在

——馬作的盧飛快,弓如霹靂弦驚


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章