我解决了一些问题而我无法解决这些问题。我必须写一个用户输入十进制数的代码,我需要计算在其他众多系统中该数字从数字1开始的次数。 这是算法:
Block
答案 0 :(得分:0)
而不是循环,请使用:
x = x - ((x / i) * i);
if (x == 1)
{
...
}
这仅适用于整数数学。
答案 1 :(得分:0)
您可以通过不检查验证的i来加速它
i <= n < 2*i
因为所有人都会满意。
因此,请仅检查for(int i = 3; i <= n/2; ++i)
,然后将(n + 1)/ 2添加到最终brOsnova
。
我确信它可以进一步加速,并且必须有一些O(log(n))算法,但也许它会被牵强......或者是algorithm
标签的一个好的候选问题。