牛客題 楊老師的遊戲 (暴力列舉)

2021-08-19 15:00:33 字數 1650 閱讀 8008

新疆大學acm-icpc程式設計競賽五月月賽(同步賽)b - 楊老師的遊戲

楊老師給同學們玩個遊戲,要求使用乘法和減法來表示乙個數,他給大家9張卡片,然後報出乙個數字,要求大家用表示式的形式來表示出這個數

100 可以表示為這樣的形式:100 = 129*67-8543 , 還可以表示為:100 = 13*489-6257

注意特徵:表示式中,數字1~9分別出現且只出現一次(不包含0)。

類似這樣的表示式,100 有 20 種表示法。

題目要求:

從標準輸入讀入乙個正整數n(n<1000 * 1000)

程式輸出該數字用數碼1~9不重複不遺漏地組成的全部種數。

注意:不要求輸出每個表示,只統計有多少表示法!

數字都確定了,為1~9的所有數字,那麼迴圈的次數最多為其列舉次數三十多萬吧,所以我們可以直接上暴力,但是我為了優化,人為增加了複雜度

#include 

using

namespace

std;

#define rep(i,j,k) for(int i = (int)(j);i <= (int)(k);i ++)

#define per(i,j,k) for(int i = (int)(j);i >= (int)(k);i --)

#define mmm(a,b) memset(a,b,sizeof(a))

#define fi first

#define se second

#define sz(x) ((int)(x).size())

#define pb push_back

#define mp make_pair

typedef

long

long ll;

const

int inf = (int)0x3f3f3f3f;

const

int maxn = (int)1e5+7;

int n;

int a[12] = ; //= ; //= ; //

int ans;

int q,w,e;

int num[12];

int flag;

typedef pair pi;

set se;

int main()

rep(k,j+1,9)

flag = 0;

rep(k,0,9)

if (!flag)}}

}while (next_permutation(a+1,a+10));

cout

<< sz(se) << endl;

}

#include

#include

#include

using

namespace

std;

#define ll long long

int s[9] = ;

int main()

if((a*b-c) == n) sum ++;

c = 0;

}b = 0;

}}while(next_permutation(s,s+9));

printf("%lld",sum);

}

牛客剪繩子(暴力列舉)

首先假設繩子為 2 那麼最大乘積為 1 2 繩子為 3 乘積最大 1 3 當繩子長為4開始發現規律 4 2 2 5 2 3 6 3 3 7 2 2 3 8 2 3 3 9 3 3 10 2 2 3 3 11 2 3 3 3 12 3 3 3 3 以此類推我們可以看出 最大值都是有2和3組成的,那怎麼...

牛客OI周賽7 普及組 救救企鵝(暴力列舉)

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 另一天,乙隻可愛的圍著圍巾的肥企鵝在路上搖搖晃晃地走著,遇上了迎面走來的打著飽嗝的pm6。小企鵝預感不妙,這不就是最近有名的惡人pm6麼!嚇得立刻扭頭就想跑。pm6...

牛客OI周賽7 普及組 數糖紙(暴力列舉)

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 可能很多人要吐槽為什麼標題不是 救救blabla 了。第一行乙個正整數 n 表示共有 n 張糖紙。第二行共有 n 個正整數,第 i 個正整數表示第 i 張糖紙的顏色...