20201105列舉課後總結

2022-04-29 20:18:10 字數 3965 閱讀 2547

目錄**

#210792. 分解質因數

資料範圍與提示

思路**

#10213. 質因數分解公升級版

#420. [noi online 入門組] 文具訂購(本站資料)

資料範圍與提示

思路**

題目描述

小偉暑假期間到大草原旅遊,在一塊石頭上發現了一些有趣的碑文。碑文似乎是乙個神秘古老的語言,只包括三個大寫字母cow。儘管小偉看不懂,但是令他高興的是,cow的順序形式構成了一句他最喜歡的奶牛單詞「cow」。現在,他想知道有多少次cow出現在文字中。如果cow內穿插了其他字元,只要cow字元出現在正確的順序,小偉也不介意。甚至,他也不介意出現不同的cow共享一些字母。例如,cwow出現了1次cowccow算出現了2次cowccooww算出現了8次cow

輸入格式
輸入包括一行僅僅包括"c","o","w"的字串

輸出格式

樣例輸入

cccoow
樣例輸出
6
思路

#1

列舉遍歷計算c的個數,c之後o的個數和o之後w的個數,所有字元個數相乘即可(乘法原理

#2
時間複雜度o(n)遍歷字串,統計c的個數,統計完c的個數則就能求出co的個數,統計完co最後就能求出cow的個數,逐次遞進

**
#includeusing namespace std;

typedef long long ll;

string s;

ll len,ans,cntc,cntco;

int main()

2=2\\

3=3\\

4=2^2\\

10=2\times 5\\

100=2^2 \times 5^2

\end

\]輸入格式

輸入一行,包含乙個正整數\(n\)

輸出格式
輸出\(n\)的質因式表達, 要求質因數是從小到大的

樣例

樣例輸入#12

樣例輸出#1
2=2
樣例輸入#2
100
樣例輸出#2
100=2^2*5^2
資料範圍與提示

\[\begin

2\leq n \leq 10^9

\end

\]

思路
使用試除法(如果這個數為2的倍數,就不用再去除4了)。如果乙個數的除數可以除多個,則計算個數,然後根據格式輸出即可

**
#includeusing namespace std;

typedef long long ll;

ll n,cnt;

bool flag=true;

int main()

if(cnt==1)else if(cnt>0)

cnt=0;

} if(n!=1)

return 0;

}

題目描述
求出區間[a,b]中所有整數的質因數分解。

輸入格式
輸入兩個整數a,b。

輸出格式
每行輸出乙個數的分解,形如k=a1a2a3...(a1< =a2< =a3...,k也是從小到大的)(具體可看樣例)

樣例輸入
3 10
樣例輸出
3=3 

4=2*2

5=5

6=2*3

7=7

8=2*2*2

9=3*3

10=2*5

思路
與上題基本一致,從乙個數變成了乙個區間內的乙個數

**
#includeusing namespace std;

typedef long long ll;

ll a,b;

int main()

} if (x != 1) else

} return 0;

}

題目描述
小明的班上共有\(n\)元班費,同學們準備使用班費集體購買\(3\)種物品:

圓規,每個\(7\)元。

筆,每支\(4\)元。

筆記本,每本\(3\)元。

小明負責訂購文具,設圓規,筆,筆記本的訂購數量分別為\(a,b,c\),他訂購的原則依次如下:

\(n\)元錢必須正好用光,即\(7a+4b+3c=n\)

在滿足以上條件情況下,成套的數量盡可能大,即\(a,b,c\)中的最小值盡可能大。

在滿足以上條件情況下,物品的總數盡可能大,即\(a+b+c\)盡可能大。

請你幫助小明求出滿足條件的最優方案。可以證明若存在方案,則最優方案唯一。

輸入格式
輸入僅一行乙個整數,代表班費數量\(n\)。

輸出格式
如果問題無解,請輸出\(-1\)。

否則輸出一行三個用空格隔開的整數\(a,b,c\)分別代表圓規、筆、筆記本的個數。

樣例

樣例輸入#1

1
樣例輸出#1
-1
樣例輸入#2
14
樣例輸出#2
1 1 1
樣例輸入#3
33
樣例輸出#3
1 2 6
資料範圍與提示

樣例資料#3解釋

\(a=2,b=4,c=1\)也是滿足條件\(1,2\)的方案,但對於條件\(3\),該方案只買了\(7\)個物品,不如\(a=1,b=2,c=6\)的方案。

資料規模與約定

\[\begin

對於測試點1\sim 6,保證n\leq 14.\\

對於測試點7\sim 12,保證n是14的倍數。\\

對於測試點13\sim 18,保證n\leq 100。\\

對於全部的測試點,保證0\leq n \leq 10^5。\\

\end

\]思路

列舉a和b,計算出c,判斷如果加和為n,則表明有解,再根據題目條件,求解最優解,記錄,最後如有解則輸出,無解則輸出-1.

**
#includeusing namespace std;

typedef long long ll;

ll n,ansa=-1,ansb=-1,ansc=-1,sum;

bool f;

int main()

for(ll a=n/7;a>=0;a--)

}} }

if(!f)printf("-1");

else

return 0;

}

javaweb學習總結三 列舉

一 列舉的概念 定義特定的資料,尤其像一些狀態位。二 定義列舉類 1 定義列舉,其中grade列舉可以看做類,a b c d e可以看做物件,因為它定義了有引數的構造方法,所以 物件後面必須帶引數。1 定義列舉grade 2enum grade 910 public string getvalue ...

7 2列舉排列

7.2.1生成1 n 的排列 問題描述 輸入整數n,按照字典序從小到大列印出1 n的去所有排列。兩個序列的字典序大小關係等價於從頭開始第乙個不相同處的大小關係,例如 1,2,3 3,2,1 n 3時,輸出結果是 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 演算法思想 設集...

9 4 列舉型別

乙個變數只有幾種可能的取值,可以一一枚舉出來,變數的取值僅限於列舉的值的有限範圍內,而不適宜用整型 實型 字元型直接表示,c語言提供了這種列舉資料型別。例如,一年的四季有春夏秋冬 乙個星期有星期日 星期一到星期六等。定義列舉型別的一般形式為 enum 列舉型別名 如 enum weekday 1.列...