154 条题解
-
0794613 LV 3 @ 2006-09-14 22:39:36
请问一下怎么求长度?楼下的n*ln 2 / ln 10 + 1我没有太看明白,请用文字叙述一下谢谢。
-
02006-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
. . . . . . . . . . -
02006-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
....... -
02006-09-08 10:54:38@
长度=n*ln 2 / ln 10 + 1
然后就高精度运算了..
Accepted 有效得分:100 有效耗时:0ms
-
02006-09-08 08:00:06@
纯粹的高精度,毫无遮掩,快速幂
不会的话可以用暴力分段法....
-
-12017-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; }
-
-12016-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;
} -
-12006-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怎么使用???
大牛给点提示
谁给我标准程序给看看啊 -
-12006-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! -
-12006-09-13 17:43:35@
0ms
0ms
0ms
0ms
0ms
0ms
0ms
0ms
0ms
0ms
Accepted -
-12006-09-11 13:58:06@
编译通过...
├ 测试数据 01:运行超时...
├ 测试数据 02:运行超时...
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:运行超时...
├ 测试数据 10:运行超时...
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:60 有效耗时:0ms
??????????????? -
-12006-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行...
-
-12006-09-08 17:09:42@
编译通过...
├ 测试数据 01:运行超时...
├ 测试数据 02:运行超时...
├ 测试数据 03:运行超时...
├ 测试数据 04:答案正确... 451ms
├ 测试数据 05:答案正确... 110ms
├ 测试数据 06:答案正确... 20ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:运行超时...
├ 测试数据 10:运行超时...
为什么????!!!! -
-22016-10-26 13:49:32@
错了