标题:2的1到64次方之和
只看楼主
罗庇鹏ksq
Rank: 5Rank: 5
来 自:太平洋
等 级:职业侠客
帖 子:220
专家分:310
注 册:2012-6-30
得分:0 
有个地方小失误,下面的10000改成64,这是我测试10000的代码,不小心贴错了。
 for(i=0,n=1,a[i]='1';i<10000;i++){  //求2的64次方,需要求2的n次方,只要把64改动一下

从来都是无所谓,现在也该学着有所谓。✿咱们一个人,别坐井观天❀
2013-05-03 22:10
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:0 
把以前写的贴上来,大致一样,加了一个分治法算得快了些
程序代码:
#include <stdio.h>

#define MAX 10001
int ss[MAX][MAX/3] = {{1, 1}, {1, 2}, {1, 4}};

void Multiply(int a)
{
    if (ss[a+a][0])    return;

    int temp, n, i, j;
    n = ss[a][0] * 2 + 1;

    for (i = ss[a][0]; i > 0; --i)
    for (j = ss[a][0]; j > 0; --j)
        ss[a+a][n-i-j] += ss[a][i] * ss[a][j];

    for (i = 1; i < n-2; ++i)
    {
        ss[a+a][i+1] += ss[a+a][i] / 10;
        ss[a+a][i] %= 10;
    }
    while (ss[a+a][i] > 9)
    {
        ss[a+a][i+1] += ss[a+a][i] / 10;
        ss[a+a][i++] %= 10;
    }
    ss[a+a][0] = (i -= !ss[a+a][i]);

    for (j = 1;j <= i;++j, --i)
        temp = ss[a+a][j], ss[a+a][j] =
        ss[a+a][i], ss[a+a][i] = temp;
}

void Mul(int n)
{
    if (ss[n][0])    return;

    int len = ss[n-1][0];
    int i, j, temp = 0;

    for (i = 1;len > 0;--len)
    {
        temp += ss[n-1][len] * 2;
        ss[n][i++] = temp % 10;
        temp /= 10;
    }
    if (temp) ss[n][i] = temp;
    else    --i;

    ss[n][0] = i;
    for (j = 1;j < i;++j, --i)
        temp = ss[n][j], ss[n][j] =
        ss[n][i], ss[n][i] = temp;
}

void Get(int n)
{
    if (ss[n][0])    return;

    Get(n / 2);Multiply(n / 2);
    if (n & 1)    Mul(n);
}

int main()
{
    int i, n;
    while (scanf("%d", &n) != EOF && n < MAX && n >= 0)
    {
        Get(n);printf("2 ^ %d = ", n);
        for (i = 1;i <= ss[n][0];printf("%d", ss[n][i++]));
        puts("");
    }
    return 0;
}


[fly]存在即是合理[/fly]
2013-05-03 22:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-406097-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.480683 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved