小编Joh*_*ith的帖子

尝试/除了使用Python请求模块的正确方法?

try:
    r = requests.get(url, params={'s': thing})
except requests.ConnectionError, e:
    print e #should I also sys.exit(1) after this?
Run Code Online (Sandbox Code Playgroud)

它是否正确?有没有更好的方法来构建它?这会涵盖我的所有基础吗?

python request python-requests

345
推荐指数
4
解决办法
32万
查看次数

如何通过Windows中的setup.py安装Python模块?

我下载了一个setup.py文件附带的dateutil,但是当我尝试打开它时会抛出错误.安装此模块的正确方法是什么?

这是错误:

 error: no commands supplied
Run Code Online (Sandbox Code Playgroud)

python

57
推荐指数
1
解决办法
10万
查看次数

快速n选择k mod p为大n?

我所说的"大n"是数以百万计的东西.p是素数.

我已经尝试了 http://apps.topcoder.com/wiki/display/tc/SRM+467 但是这个功能似乎是不正确的(我用144选择6 mod 5测试了它,当它应该给我时它给了我0 2)

我试过 http://online-judge.uva.es/board/viewtopic.php?f=22&t=42690 但我完全不明白

我还做了一个memoized递归函数,它使用逻辑(组合(n-1,k-1,p)%p +组合(n-1,k,p)%p)但是它给了我堆栈溢出问题因为n很大

我尝试过卢卡斯定理,但它似乎要么缓慢还是不准确.

我所要做的就是为大n创建一个快速/准确的n选择k mod p.如果有人能帮我展示一个很好的实现,我将非常感激.谢谢.

根据要求,对于大n的命中堆栈溢出的memoized版本:

std::map<std::pair<long long, long long>, long long> memo;

long long combinations(long long n, long long k, long long p){
   if (n  < k) return 0;
   if (0 == n) return 0;
   if (0 == k) return 1;
   if (n == k) return 1;
   if (1 == k) return n;

   map<std::pair<long long, long long>, long long>::iterator it;

   if((it = memo.find(std::make_pair(n, k))) != memo.end()) {
        return …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm modular binomial-coefficients

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

快速计算n的方法!mod m其中m是素数?

我很好奇是否有一个很好的方法来做到这一点.我目前的代码是这样的:

def factorialMod(n, modulus):
    ans=1
    for i in range(1,n+1):
        ans = ans * i % modulus    
    return ans % modulus
Run Code Online (Sandbox Code Playgroud)

但它似乎很慢!

我也无法计算n!然后应用素数模数,因为有时n是如此之大,以至于n!明确计算是不可行的.

我也遇到过http://en.wikipedia.org/wiki/Stirling%27s_approximation,想知道这是否可以在某种程度上使用?

或者,我如何在C++中创建一个递归的,memoized函数?

algorithm math factorial modulus

43
推荐指数
4
解决办法
3万
查看次数

Eratosthenes的分段筛子?

制作一个简单的筛子很容易:

for (int i=2; i<=N; i++){
    if (sieve[i]==0){
        cout << i << " is prime" << endl;
        for (int j = i; j<=N; j+=i){
            sieve[j]=1;
        }
    }
    cout << i << " has " << sieve[i] << " distinct prime factors\n";
}
Run Code Online (Sandbox Code Playgroud)

但是当N非常大并且我无法在内存中保存那种数组时呢?我已经查找了分段筛选方法,它们似乎涉及到找到素数直到sqrt(N),但我不明白它是如何工作的.如果N非常大(例如10 ^ 18)怎么办?

algorithm primes sieve-of-eratosthenes prime-factoring factors

38
推荐指数
3
解决办法
3万
查看次数

创建一个新的C++子向量?

假设我有一个值为[1,2,3,4,5,6,7,8,9,10]的向量.我想创建一个新的向量,例如,[5,6,7,8].我想这只是用指针创建一个向量的问题,还是我需要push_back所需的所有中间值?

c++ vector

21
推荐指数
1
解决办法
4万
查看次数

何时使用向量以及何时在C++中使用数组?

我通常不确定何时使用一个与另一个相比更好.它们似乎总体上做同样的事情但是它的功能更加灵活吗?阵列什么时候更合适?

c++ arrays vector

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

Numpy矩阵幂/指数与模数?

是否有可能使用numpy的linalg.matrix_power与模数,因此元素不会增长大于某个值?

python matrix exponent modulo

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

C++:使用矢量/数组优化速度?

我有一个嵌套的for循环结构,现在我在每次迭代开始时重新声明向量:

void function (n1,n2,bound,etc){

    for (int i=0; i<bound; i++){
             vector< vector<long long> > vec(n1, vector<long long>(n2));
             //about three more for-loops here
    }
}
Run Code Online (Sandbox Code Playgroud)

这允许我在每次迭代时"重新开始",这很有效,因为我的内部操作主要是以vec [a] [b] + =某个值的形式.但我担心大n1或大n2的速度很慢.我不知道vector/arrays/etc的底层架构,所以我不确定处理这种情况的最快方法是什么.我应该使用数组吗?我应该以不同方式清除它吗 我应该完全不同地处理逻辑吗?

编辑:矢量的大小在技术上不会改变每次迭代(但它可能会根据函数参数而改变).我只是试图清除它/ etc,因此在所有其他情况下,程序的速度与人类一样快.

编辑:

我的不同方法的结果:

Timings (for a sample set of data):
reclaring vector method: 111623 ms
clearing/resizing method: 126451 ms
looping/setting to 0 method: 88686 ms
Run Code Online (Sandbox Code Playgroud)

c++ vector

12
推荐指数
3
解决办法
3010
查看次数

记忆,递归因子函数?

我知道如何在Python中轻松进行memoization,但我需要一种更快的方式来计算它们,所以我使用的是C++.但是,我不知道如何记忆.我知道它是关于将数值存储到数组或向量中,然后在检索时扫描它的值,但是看看如何完成它真的很有帮助,所以我可以尝试它的速度.

c++ algorithm math factorial

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