0

我有一个很大的不说'x'(10 ^ 18)和一个数字'z'说6。我试图使用ac代码知道/计算1到x(10 ^ 18)范围内有多少个数字能被 z 整除。为此我使用了一个简单的循环

While(x)
{
    if(x % z == 0)
       {
          count++;
        }
     --x;
  }

但是这段代码像预期的那样花费了太多时间,因为它正在检查从 1 到 x 的所有值。是否有任何已知的算法或技术可以优化上述代码并仍然获得相同的结果。非常感谢您的帮助。

4

1 回答 1

7
count = floor(x / z);

显然,您将需要一个足够大的数据类型来容纳x.

于 2012-04-06T17:44:55.417 回答