相关疑难解决方法(0)

您将如何以最紧凑的方式为大型组合编写此算法?

k可以从N项目检索的项目组合的数量由以下公式描述.

             N! 
c =  ___________________ 
       (k! * (N - k)!)
Run Code Online (Sandbox Code Playgroud)

一个例子是6 Balls可以从48 Balls彩票抽奖的鼓中抽取多少组合.

优化此公式以使用最小的O时间复杂度运行

这个问题的灵感来自新的WolframAlpha数学引擎,以及它可以非常快速地计算出非常大的组合.例如,随后在另一个论坛上讨论该主题.

http://www97.wolframalpha.com/input/?i=20000000+Choose+15000000

在一些人对解决方案进行了尝试之后,我会发布一些来自该讨论的信息/链接.

任何语言都可以接受.

language-agnostic performance combinations binomial-coefficients

2
推荐指数
2
解决办法
2214
查看次数

指向函数或函子的指针?函数发生器

我正在尝试构建一个多项式函数生成器,因此它将一个向量(任意大小)作为参数,并生成一个我稍后可以使用的多项式函数.

例如,

poly_gen(vector<int> power_index)
Run Code Online (Sandbox Code Playgroud)

以(我可以用另一个函数调用)的形式返回一个函数(或通过其他方法)

y(k)=a0+ a1*n+ a2*n^2 + a3*n^3 + ... + ak*n^k
Run Code Online (Sandbox Code Playgroud)

其中a0,a1 .... ak存储在vector-power_index中

后来我可以用它来调用它

int calc_poly(int n)
Run Code Online (Sandbox Code Playgroud)

calc_poly可以返回一个数字,通过使用由生成的多项式表达式计算poly_gen()

PS:我不知道如何通过关键词搜索这个问题.功能,构造,发电机,指针,仿函数...没有给我想要的结果.

谢谢你们!

c++ expression class function functor

2
推荐指数
1
解决办法
280
查看次数

我正在寻找一种计算数字功效的算法.(x ^ y),x和y是整数.它必须是复杂度O(log [n]))

目前,我的最大努力导致了复杂度O(log [n] ^ 2):

int power(x,n)
{
  int mult=1, temp=x, i=1, j=1;
  while (n>1)
  {
    mult=mult*x;
    x=temp;
    for (i=1;i<=log[n];i++)
    {
      x=x*x;
      j=j*2;
    }
    n=n-j;
    i=1;
    j=1;
  }
  if (n==1)
    return (mult*temp);
  return (mult);
}
Run Code Online (Sandbox Code Playgroud)

PS谢谢你funkymushroom帮助我的英语不好:)

algorithm math complexity-theory

2
推荐指数
1
解决办法
234
查看次数

为什么Java,Math中的不同类型的基本数学函数不会重载?

我有一个非常有趣的问题.最近我发现,Math.pow()只接受(double,double)args,我想知道为什么没有其他类型组合的重载函数,如(int,int)或(int,double)atc ......

我认为这是一个很大的漏洞,并且很多弱点,所以我相信有一个原因.有人可以向我解释一下吗?

考虑这两种方法:

private int simplePow(int x) {
    return x * x;
}
private int harderPow(int x) {
    return (int) Math.pow(x, 2);
}
Run Code Online (Sandbox Code Playgroud)

第一个比第二个快得多...问题是,如果你知道,你使用幂(int,int),计算是非常有效的,你不需要处理双变量的问题.

java math overloading pow

1
推荐指数
1
解决办法
233
查看次数

错误:'Math'未声明在此函数中首次使用

我一直收到这个错误:

'Math'未声明首次使用此功能

虽然我包括了数学库.

int x = Math.pow(10.0,(double)k);
Run Code Online (Sandbox Code Playgroud)

这是我得到错误的行,任何想法为什么?

c undeclared-identifier

1
推荐指数
1
解决办法
1868
查看次数

这个C++代码有什么问题

如果下面的代码有问题,有人可以告诉我吗...在一个问题中,我被问到以下斐波纳契数函数是否有问题.

int fib(int n)
{
  if (n <= 1) return n;
  return fib (n-1) + fib(n-2);
}
Run Code Online (Sandbox Code Playgroud)

其中n是0 ... 100

所以我的回答是什么,因为我看不到任何明显的东西.语法似乎很好,逻辑上这是计算斐波那契数.我在做出这个假设时是否正确?

c++

0
推荐指数
1
解决办法
159
查看次数

为什么10位数字会变成9,999,999,999?

这是我获取 2 根的代码

#include <stdio.h>
unsigned long long root(int n);
int main()
{
    int n,i;
    unsigned long long c;
    n=10;
    for(i=1;i<=n;i++)
    {
        c=root(i);
        printf("%d decimal digits:%llu\n",i,c);
    }
    return 0;
}

unsigned long long root(int n)
{   unsigned long long int m,d;
    d=pow(10,n);
    m=2*pow(10,2*n);
    while (pow(d,2)<=m)
    {
        d++;
    }
    return d-1;

}
Run Code Online (Sandbox Code Playgroud)

Unsigned long long int 可以支持从 0 到 $2^64-1$。我认为这足以计算 10 位小数。

我希望 10 位十进制的输出应该是14142135623

c

0
推荐指数
1
解决办法
55
查看次数

Java:基于Java中"N"问题的力量

问题陈述:

给定base和n均为1或更大,计算base的值为n次幂,因此powerN(3, 2)为9(3的平方).

powerN(3, 1) ? 3
powerN(3, 2) ? 9
powerN(3, 3) ? 27
Run Code Online (Sandbox Code Playgroud)

功能签名是 public int powerN(int base, int n)

我发现难以解决这个问题?帮帮我.
编辑:我需要一个不使用内置数学公式和递归的解决方案

java

-1
推荐指数
1
解决办法
8165
查看次数

while 循环停止处理大数 C#

我的 while 循环在 10_000 上工作正常,但在 100_000 上加载需要时间,并且在 10_000_000 上不起作用。

我不明白为什么,它是一台机器,无论数字多少,它都应该很快。所以我认为我的代码中有一个错误,但对我来说,一切看起来都很好。

实施这个在此输入图像描述

Console.WriteLine(SumSequenceElements(10_000_000));

static double SumSequenceElements(int n)
{
   int i = 1;
   double sum = 0;
   while (i <= n)
   {
      int j = 0;
      double power = 1;
      while (j < i + 1)
      {
         power *= -1;
         j++;
      }

      sum += power / (i * (i + 1));
      i++;
   }

   return sum;
}
Run Code Online (Sandbox Code Playgroud)

c# big-o sum sequence while-loop

-1
推荐指数
1
解决办法
163
查看次数

为什么pow(5,3)不返回125?

当我使用该pow()功能时,有时结果是一个.例如,这段代码产生124,但我知道5³应该是125.

#include<stdio.h>
#include<math.h>

int main(){
    int i = pow(5, 3);
    printf("%d", i);
}
Run Code Online (Sandbox Code Playgroud)

为什么结果错了?

c math pow calculation

-3
推荐指数
1
解决办法
1176
查看次数