5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

巨大数探索スレッド10

98 :132人目の素数さん:2014/07/16(水) 08:25:04.44
c++で大きな数を返すプログラムを組みました。
intがオーバーフローしないとしてどれくらいの大きさでしょうか。
int a=9e999;
int *dup(int *x){int i,*y;if(x==NULL)return x;for(i=0;x[i]!=-1;i++);y=new int[i+1];while(i>=0){y[i]=x[i];i--;}return y;}
bool next(int *x){int i;while(x[i]==0){x[i]=a;i++;}if(x[i]==-1)return false;x[i]--;return true;}
int* max(){int i,*x;x=new int[a+1];for(i=0;i<a;i++)x[i]=a;x[a]=-1;return x;}
struct A{int t;int *x;A *list;};
A S={-1,NULL,NULL};
bool operator==(A x,A y){return x.t==y.t &amp;&amp; x.x==y.x &amp;&amp; x.list == y.list;}
A dup(A x){A y;int i;y.t=x.t;y.x=dup(x.x);if(x.list==NULL){y.list=NULL;return y;}for(i=0;!(x.list[i]==S);i++);
y.list=new A[i+1];while(i>=0){y.list[i]=dup(x.list[i]);i--;}return y;}
A max(A x){A y;y.t=a;y.x=dup(x.x);if(!next(y.x)){y.list=NULL;y.x=NULL;return y;}y.list=new A[a+1];for(i=0;i<a;i++)y.list[i]=max(y);y.list[a]=S;}
A maxA(){int i;A x;x.t=a;x.x=max();x.list=new A[a+1];for(i=0;i<a;i++)x.list[i]=max(x);x.list[a]=S;return x;}
bool next(A &amp;x){int i;if(!x.list){return x.t--;}for(i=0;!next(x.list[i]);i++){x.list[i]=max(x.list[i]);}if(x.list[i]==S){return x.t--;}}
void f(A x){a<<=a<<a;if(!next(x))return;A y=maxA();while(next(y)){A z=dup(x);f(z);}}
int main(){A x=maxA();f(x);return a;}

347 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)