codeforce 1374 B 數論解法

2021-10-07 17:43:36 字數 565 閱讀 9322

#include

#include

using

namespace std;

intmain()

return0;

}

題意:輸入t個數,對每乙個數要麼乘2,要麼整除6,問每乙個數最小步數到1是多少步

分析:乙個大於1的數轉移到1一定由除6得到,那麼從n變為1必須要除6,也就是除2除3,2和3是素因子,由素因子分解定理可知,乙個數的素因子個數是唯一的,那麼每乙個數如果不斷地除2除3,

如果最後得到的數為1:

說明只有2,3素因子,如果除2除3的次數相等的,那這個次數就是答案,

如果2,3次數不相等,2多3少,由於不能乘3,也就是不能增添素因子,那麼這裡就不能轉化為更多的6所以這裡是-1

如果3多2少,由於可以乘2說明可以把多餘的3轉化為2,所以輸出cnt3-cnt2+cnt3

如果最後得到的數不為1:

如果得不到1那麼也就是還有其他素因子,這個素因子不會因為乘2或者除6就能消去,所以答案是-1;

還有一種寫法,就是通過打表,提前把所有6的倍數的數提前標記好然後,

CodeForce 91B 單調佇列 二分

題意 個數,求出a i a i a i 後面最後乙個小於a i a i a i 的數與a i a i a i 間的距離,如果沒有小於a i a i a i 的數則輸出 題解 從後往前遍歷陣列,單調佇列維護乙個遞減的序列,每次判斷將要插入的數與隊尾的數的大小關係。如果當前插入的數不能保持佇列的單調性則...

每日練習 需要讀題的codeforce5B

題目鏈結貼上,不多贅述 這道題首先是要讀懂題,搞清楚題目的指示 即 將文字包圍在乙個符號 組成圈裡面,字串居中放置,若左右空格長度不一致,由上至下依次靠左再靠右交替 同時,在題目進行左右分隔時,不能採用if,而應該採用?三目運算子,因為從邏輯上講,是因為左右不同才需要左右交替,而不是因為左右不同且從...

Codeforce962B 二進位制列舉暴力

傳送門 題意 給你乙個數字 沒有前導零 要求你刪除一些數字,使得這個數字 不能有前導零 的平方根為整數。沒有則輸出 1.思路 數字不大,二進位制列舉每一種組合情況。二進位制列舉實現傳送門 include include include include include include include ...