Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何找到用二次幂表示一个数的方法,但只允许两种二次幂_C#_Math_Dynamic_Binary_Puzzle - Fatal编程技术网

C# 如何找到用二次幂表示一个数的方法,但只允许两种二次幂

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}呢

例如,对于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}呢