C# 如何找到用二次幂表示一个数的方法,但只允许两种二次幂
例如,对于6,算法应该返回3,因为只使用2的两种幂,6只能以三种方式表示{1,1,2,2},{1,1,4}和{2,4}C# 如何找到用二次幂表示一个数的方法,但只允许两种二次幂,c#,math,dynamic,binary,puzzle,C#,Math,Dynamic,Binary,Puzzle,例如,对于6,算法应该返回3,因为只使用2的两种幂,6只能以三种方式表示{1,1,2,2},{1,1,4}和{2,4} 我能想到的唯一解决办法是找到所有方法,首先用2的所有幂来表示一个数字,然后消除使用2的两种以上幂的解。但是,此解决方案的运行时非常糟糕,并且不能用于大量应用程序。有没有一种方法可以快速判断解决方案集中是否有二的幂?这样我们就可以很快地找到解决方案,即使是大数字,例如8489289。我可能会误解,但是{2,2,2}{1,1,1,1}{1,1,1,2}呢
我能想到的唯一解决办法是找到所有方法,首先用2的所有幂来表示一个数字,然后消除使用2的两种以上幂的解。但是,此解决方案的运行时非常糟糕,并且不能用于大量应用程序。有没有一种方法可以快速判断解决方案集中是否有二的幂?这样我们就可以很快地找到解决方案,即使是大数字,例如8489289。我可能会误解,但是{2,2,2}{1,1,1,1}{1,1,1,2}呢