题解

154 条题解

  • 0
    @ 2006-09-14 22:39:36

    请问一下怎么求长度?楼下的n*ln 2 / ln 10 + 1我没有太看明白,请用文字叙述一下谢谢。

  • 0
    @ 2006-09-14 22:31:33

    把前几位写出来可一推出位数规律??

    1 1 1 1 2 2 2 3 3 3

    4 4 4 4 5 5 5 6 6 6

    . . . . . . . . . .

  • 0
    @ 2006-09-14 20:42:05

    高效算法:

    2^p...

    2^1 (2^1)^2= 2^2 (2^2)^2 = 2^4 (2^4)^2 = 2^8 (2^8)^2 = 2^16

    .......

  • 0
    @ 2006-09-08 10:54:38

    长度=n*ln 2 / ln 10 + 1

    然后就高精度运算了..

    Accepted 有效得分:100 有效耗时:0ms

  • 0
    @ 2006-09-08 08:00:06

    纯粹的高精度,毫无遮掩,快速幂

    不会的话可以用暴力分段法....

  • -1
    @ 2017-03-12 08:52:58
    #include<cstdio>
    #define re register int
    #define File(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout)
    //---------------------------True Code----------------------------
    #include<cmath>
    #include<cstring>
    const int base=1e4,length=125;
    struct big{
        int a[500];
        inline void clear(){memset(a,0,sizeof(a));}
        big operator*(big b){   
            big c;c.clear();c.a[0]=a[0]+b.a[0];
            for(re i=1;i<=a[0];i++)  
                for(re j=1;j<=b.a[0];j++){
                    c.a[i+j-1]+=a[i]*b.a[j];
                    c.a[i+j]+=c.a[i+j-1]/base;
                    c.a[i+j-1]%=base;
                }
            while(c.a[0]>length||c.a[c.a[0]]==0)c.a[c.a[0]--]=0;
            return c;
        }
        inline void out(){
            a[1]-=1;//麦森数是2^p -1 
            for(re i=125,sum=0;i;i--){
                printf("%d%d",a[i]/1000,a[i]/100%10);sum+=2;
                if(sum==50){puts(""),sum=0;}
                printf("%d%d",a[i]/10%10,a[i]%10);sum+=2;
                if(sum==50){puts(""),sum=0;}
            }
            puts("");
        }
    }ans,a;
    inline void powMod(int k){
        ans.clear();ans.a[0]=ans.a[1]=1;
        a.clear();a.a[0]=1;a.a[1]=2;
        for(;k;k>>=1,a=a*a)
            if(k&1)ans=ans*a;
        ans.out();
    }
    int main(){
        File("mason");
        int n;scanf("%d",&n);
        printf("%d\n",int(floor(log10(2)*n)+1));
        powMod(n);//麦森数就是一个快速幂 mod=10^500 
    return 0;
    }
    
  • -1
    @ 2016-10-29 11:16:53

    #include<bits/stdc++.h>
    using namespace std;
    int a[10000],b[10000];
    char daan[100000]={"0"},ans[10000]={"0"};
    void cf(char A[],char B[]){
    int i,j,k=0,n,m,x;
    int c[100000],d[100000],e[100000];
    long long l;
    n=strlen(A); m=strlen(B);
    strrev(A); strrev(B);

    memset(d,0,sizeof(d)) ; memset(e,0,sizeof(e)) ; memset(c,0,sizeof(c)) ;
    for(i=0;i<n;i++) d[i]=A[i]-48; for(i=0;i<m;i++) e[i]=B[i]-48;
    k=0;
    for (i=0;i<n;i++)
    for (j=0;j<m+1;j++)
    {
    c[i+j] = c[i+j] + d[i] * e[j] +k;
    k= c[i+j] / 10 ;
    c[i+j] = c[i+j] % 10 ;
    }
    k=22000;
    while (c[k]==0) k--;
    for(i=k;i>=0;i--) A[i]=c[i];
    }
    int main()
    {
    int i,j,k,l,n,m;
    cin>>n>>m;
    ans[0]=2;
    a[0]=1;
    k=n;
    i=0;
    while(k){
    n[i]=k%10+48;
    k/=10;
    i++;
    }
    while(m>0){
    if(m&1) cf(ans,daan);
    m/=2;
    cf(daan,daan);
    }
    for(i=500;i>=0;i--) cout<<ans[i]-48;
    return 0;
    }

  • -1
    @ 2006-10-30 17:21:12

    ├ 测试数据 01:运行超时...

    ├ 测试数据 02:运行超时...

    ├ 测试数据 03:运行超时...

    ├ 测试数据 04:答案正确... 691ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:运行超时...

    ├ 测试数据 10:运行超时...

    那位大哥大姐有改进的方法啊 n*ln 2 / ln 10 + 1怎么使用???

    大牛给点提示

    谁给我标准程序给看看啊

  • -1
    @ 2006-10-09 19:16:35

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 72ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 25ms

    ├ 测试数据 10:答案正确... 56ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:153ms

    哈哈,纪念一下!

    原来用了两种算法都超时。后来两者结合,用4层优化,最大的数据也只耗时72ms!

  • -1
    @ 2006-09-13 17:43:35

    0ms

    0ms

    0ms

    0ms

    0ms

    0ms

    0ms

    0ms

    0ms

    0ms

    Accepted

  • -1
    @ 2006-09-11 13:58:06

    编译通过...

    ├ 测试数据 01:运行超时...

    ├ 测试数据 02:运行超时...

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:运行超时...

    ├ 测试数据 10:运行超时...

    ---|---|---|---|---|---|---|---|-

    Unaccepted 有效得分:60 有效耗时:0ms

    ???????????????

  • -1
    @ 2006-10-08 22:25:22

    时间复杂度也许很高,不过十分简单,别想复杂了!^_^

    编译通过...

    ├ 测试数据 01:答案正确... 166ms

    ├ 测试数据 02:答案正确... 150ms

    ├ 测试数据 03:答案正确... 119ms

    ├ 测试数据 04:答案正确... 88ms

    ├ 测试数据 05:答案正确... 56ms

    ├ 测试数据 06:答案正确... 25ms

    ├ 测试数据 07:答案正确... 25ms

    ├ 测试数据 08:答案正确... 56ms

    ├ 测试数据 09:答案正确... 181ms

    ├ 测试数据 10:答案正确... 181ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:1047ms

    一共写了106行...

  • -1
    @ 2006-09-08 17:09:42

    编译通过...

    ├ 测试数据 01:运行超时...

    ├ 测试数据 02:运行超时...

    ├ 测试数据 03:运行超时...

    ├ 测试数据 04:答案正确... 451ms

    ├ 测试数据 05:答案正确... 110ms

    ├ 测试数据 06:答案正确... 20ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:运行超时...

    ├ 测试数据 10:运行超时...

    为什么????!!!!

  • -2
    @ 2016-10-26 13:49:32

    错了

信息

ID
1223
难度
5
分类
数论 | 数位统计 点击显示
标签
递交数
4069
已通过
1446
通过率
36%
被复制
20
上传者