用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c代码库

uva 748

2013-06-15 作者: 凶残程序员举报

[c]代码库

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXN 1000

int ans[MAXN], result[MAXN], Baselen;
int Mul(int base[], int len);

int main()
{
    int i, j;
    int n = 0, pos, c, len, count, base[6];
    char R[6];

    memset(R, '0', sizeof(R));
    memset(result, 0, sizeof(result));
    memset(base, 0, sizeof(base));

    while (scanf("%s%d", R, &n)==2)
    {
        Baselen = strlen(R);
        pos = 0;
        c = 0;
        len = 0;
        count = 0;
        memset(result, 0, sizeof(result));
        for (i=Baselen-1; i>=0; i--)
        {
            if (R[i]) break;
        }
        Baselen = i;
        for (i=0; i<Baselen+1; i++)
        {
            if (R[i] != '.') result[c++] = R[i]-'0';
            else pos = Baselen-i;
        }
        memcpy(base, result, sizeof(base));
        len = Baselen;
        for (i=1; i<n; i++)
        {
            if (n==1) break;
            len = Mul(base, len);
        }
        pos = n*pos;
        i = 0;
        while (result[i]==0&&i<len-pos) i++;
        count = i;
        for (i=MAXN-1; i>=0; i--) if (result[i]) break;
        j = i;
        for (i=count; i<=j; i++)
        {
            if (i ==len-pos) printf(".");
            printf("%d", result[i]);
        }
        printf("\n");
    }
    return 0;
}

int Mul(int base[], int len)
{
    memset(ans, 0, sizeof(ans));
    int c = 0, k = 0;
    int i, j;
    for (i=Baselen-1; i>=0; i--)
    {
        for (j=len-1, c=Baselen-1-i; j>=0; j--)
        {
            ans[c++] += base[i]*result[j];
        }
    }
    for (i=0; i<MAXN-1; i++)
    {
        ans[i+1] += ans[i]/10;
        ans[i] %= 10;
    }
    for (i=MAXN-1; i>=0; i--)
    {
        if (ans[i]||i == c) break;
    }
    for ( ; i>=0; i--)result[k++] = ans[i];
    return c+1;
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...