给定n,求2^n的所有数字的和。
例子:
输入n = 7输出b = 11
因为2^7 = 128,而1 + 2 + 8 = 11。
直到我们用int8函数强制b为整数,我们的程序才被批准
好工作
函数b =和位数(n)
给定n,求组成2^n的数的和
在= num2str (2 ^ n);
b =总和(str2num ((:)));
结束
这个解不包括n的整个范围。
此代码给出了matlab验证的预期结果,不知道为什么它被认为是错误的答案
笨拙,但我很高兴^_^
有趣的问题。我想它很少被应用。
太棒了!学习arrayfun的存在性
在qs中传递变量是'n'而在解中传递变量是'a'
这个解决方案利用了一个事实,即ASCII字符集是有序的。
非常聪明!我怎么没想到呢!?
很好:转置一个字符行到一个字符列使工作…
很好,但是这个解不适合>47的和
所以在mod和sum之间切换应该没问题吧?
请解释为什么在执行(num2str(2^n)-'0')时数字会分离
num2str将整数转换为该数字的字符串表示:1234变成了'1234',它与['1','2','3','4']相同。现在每个数字有一个数组项。从那里减去'0',那么char数组将变成一个值为0的双数组,其中char是'0',等等。
这只在n的数字加起来小于9的情况下才有效(显然),这对于当前测试用例来说很好,但是以后就不适用了。
这应该不行,因为你要把2^n的数加起来