1604. 电压放大器(amp)
(File IO): input:amp.in output:amp.out
题目描述
西西需要把输入的电压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,无论用第一种放大器还是第二种,放大后的电压始终都是奇数。所以所有奇数都是有解的,偶数都是无解的。