簡單列舉之除法

2021-08-09 05:07:59 字數 814 閱讀 9928

題意:給定乙個正整數n,請按照從小到大的順序輸出形如abcde / fghij = n的表示式,其中每個字母代表0~9中的乙個數字且每個數字只出現一次。

input:有多組輸入。輸入的每行僅有乙個正整數n,當n為-1時表示輸入結束。

分析:當我們第一眼看上去可能會覺得,我們需要0-9這個10個數都需要列舉,並且分別代表abcdefghij,但是這樣的話列舉量太大了,我們就想著能不能簡化一些,通過題目我們知道n是商,fghij是除數,所以我們如果需要知道被除數abcde,只需要n*fghij=abcde,這樣列舉量就是從1234--98765這個範圍之間了。

#include #include using namespace std;

int check(int a,int b)

sort(num,num+10);//將陣列裡面的數字進行排序

for(int j=0;j<10;j++)

return 1;

}int main()

{ int n,k=1;

cin>>n;

for(int i=1234;i<=98765;i++)

{ if(n==-1) break;

int j=i*n;

if(j>=10234 && j<=98765)

{ if(check(i,j)==1)

{k=0;

if(i>10000) cout<

結論:在列舉複雜物件之前,先嘗試著列舉一些相對簡單的內容,如整數,子串等,儘管暴力求解列舉不用太動腦筋,但是我們對問題要先進行事前的分析,看看能不能降低列舉量,這樣會讓演算法更加簡潔而高效

7 1 簡單列舉 7 1 1除法

輸入正整數n,按從小到大的順序輸出所有形如abcde fghij n的表示式,其中a j恰好為數字0 9的乙個排列,2 n 79。樣例輸入 62 樣例輸出 79546 01283 62 94736 01528 62 思路 列舉fghij 求出abcde,列舉量從10!3628800不到10000.實...

暴力求解之簡單列舉

題目 輸入正整數n,按照從小到大的順序輸出所有形如abcde fghij n 的表示式,其中a j恰好為數字0 9的乙個排列,2 n 79.樣例輸入 樣例輸出 79546 01283 62 94736 01528 62 題目分析 只需列舉fghij就可以算出abcde,然後判斷所有的數字是否有重複即...

CSU 1781 階乘除法(列舉)

description 輸入兩個正整數 n,m,輸出 n m 其中階乘定義為 n 1 2 3 n n 1 比如,若 n 6,m 3,則 n m 6 3 720 6 120。是不是很簡單?現在讓我們把問題反過來 輸入 k n m 找到這樣的整數二元組 n,m n m 1 如果答案不唯一,n 應該盡量小...