新疆大學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 張糖紙的顏色...