題目描述
西西需要把輸入的電壓1伏通過一系列電壓放大器放大成原來的n倍,然後輸出。
西西現在手上有兩種放大器:
第一種能夠把x伏的電壓放大成2x-1伏
第二種能夠把x伏的電壓放大成2x+1伏
放大器是串聯(即按順序放在一條線路上)的。
現在西西手上有用不完的放大器,他希望能組出乙個電路,使用數量最少的放大器,使得電壓被放大了剛好n倍。
輸入
一行乙個正整數n(1<=n<=2*10^9)
輸出
如果無法組成電路則輸出一行no solution
否則輸出兩行,第一行乙個整數表示最少的放大器個數k,第二行k個用空格隔開的1或2,表示放大器序列。1表示第一種,2表示第二種,其中左邊為輸入端。如果有多解輸出任意一組。
樣例輸入5
樣例輸出2
2 1
資料範圍限制
50%的資料中,n<=1000000
100%的資料如題。
提示
先經過放大器2,1*2+1=3,然後經過1,3*2-1=5。滿足要求
先講怎麼判斷no solution。我們發現從1開始,因為奇數*2=偶數(嫑跟我說你不知道),偶數+1=奇數,偶數-1等於奇數,too.so,無論用第一種放大器還是第二種,放大後的電壓始終都是奇數。所以所有奇數都是有解的,偶數都是無解的。
第一腫方法:暴力搜尋
我比賽時想的方法,70分,本來有80分的,oj竟然乙個no solution 都沒有,我加了乙個no solution 的判斷後,有乙個資料點又剛好過不了了(就差這一點點)。
怎麼暴力算放大器序列呢?如果觀察過就會發現n1
3579
1113
1517
1921
2325
2729
3133
3537
...k01
2233
3344
4444
4455
5...放大器
序列22 12 2
2 1 1
2 1 2
2 2 1
2 2 2
2 1 1 1
2 1 1 2
2 1 2 1
2 1 2 2
2 2 1 1
2 2 1 2
2 2 2 1
2 2 2 2
2 1 1 1 1
2 1 1 1 2
2 1 1 2 1
...k為0的只有1乙個,1的也只有3乙個,2的有兩個,3的有四個,4的有八個……也就是說,除了1之外,所有k=floor(log2n),floor意思是向下取整,log計算不懂的去這裡
和這裡看看。而放大器序列只用暴力dfs求長度為k的第n-2k個組合
第二腫方法:倒推法
正解√。我們可以用倒推法求解。怎麼個倒推法?即從n開始倒推,一直到n=1結束。可是我們怎麼知道每一次要用那種放大器?n1
3579
1113
1517
1921
2325
2729
3133
3537
...放
大器序列
22 1
2 22 1 1
2 1 2
2 2 1
2 2 2
2 1 1 1
2 1 1 2
2 1 2 1
2 1 2 2
2 2 1 1
2 2 1 2
2 2 2 1
2 2 2 2
2 1 1 1 1
2 1 1 1 2
2 1 1 2 1
...轉化成如下**:
當前n135
791113
1517
1921
2325
2729
3133
3537
...使用的放大器22
1212
1212
1212
1212
1我們發現當n在奇數序列裡的位置是偶數時(如3、7、11……)只能用第2種放大器,是奇數時(如5、9、13……)則只能用第2種放大器(1除外)。因為是倒推,所以用第一種放大器要變成(n+1)/2,第二種變成(n-1)/2。可以用乙個變數來儲存計算的次數,即為k,遞迴完在逆序輸出序列。因為是倒推,所以記得逆序哈。
T2 電壓放大器(amp)
這道題我比賽的時候選擇了最後做,不為什麼就為了他那 好似 搜尋過不了 dp也沒得做的特性 好了,廢話不多說上題目 題目描述 西西需要把輸入的電壓1伏通過一系列電壓放大器放大成原來的n倍,然後輸出。西西現在手上有兩種放大器 第一種能夠把x伏的電壓放大成2x 1伏 第二種能夠把x伏的電壓放大成2x 1伏...
電壓放大器應用 如何使用諧振技術驅動高頻電磁體
諸如繼電器,螺線管,電感器,亥姆霍茲線圈,電磁體和電動機的電磁線圈通常需要大電流和高頻操作。在低頻下,使用波形放大器,可以直接驅動高電流通過線圈。線圈的電感足夠低,可以直接由放大器驅動,如圖1所示。線圈可以建模 簡單模型 作為與理想電感串聯的寄生電阻。寄生電阻一般較小。圖1.波形放大器直接驅動具有寄...
放大器初探
在電子電路中,放大電路是基本的電路形式,它的作用是將微弱的電訊號 電壓,電流,功率 在允許的失真範圍內放大到需要的幅度。在自動控制,電子測量,計算機,通訊,預報,鐵路,電視,廣播等許多領域中都需要將微弱訊號放大。微弱訊號通常由一些非電物理量如溫度,壓力,速度,位移,震動,聲音,影象等經過器件轉換成微...