#ifndef HPC_H #define HPC_H #include<string> using std::string; using std::cout; using std::endl; //类型定义 struct fuk { int len,a[510]; fuk() { len=0; memset(a,0,sizeof(a)); } }; //内部函数 int maxer(int x,int y) { return x>y?x:y; } int miner(int x,int y) { return x>y?y:x; } fuk h_p_i(fuk a,fuk b) { fuk c; c.len=maxer(a.len,b.len); for(int i=1;i<=c.len;i++) c.a[i]=a.a[i]+b.a[i]; for(int i=1;i<=c.len;i++) { c.a[i+1]+=c.a[i]/10; c.a[i]%=10; } int i=c.len;while(c.a[i+1]>0) { i++; c.a[i+1]=c.a[i+1]+c.a[i]/10; c.a[i]=c.a[i]%10; } while(c.a[i]==0 and i>1) i--; c.len=i; return c; } fuk h_2N_i(fuk xx) { fuk ans; ans.len=xx.len; for(int i=1;i<=ans.len;i++) ans.a[i]+=xx.a[i]*2; for(int i=1;i<=ans.len;i++) { ans.a[i+1]+=ans.a[i]/10; ans.a[i]%=10; } int i=ans.len; while(ans.a[i+1]>0) { i++; ans.a[i+1]+=ans.a[i]/10; ans.a[i]%=10; } while(ans.a[i]==0&&i>0) i--; ans.len=i; return ans; } float AdvSqrt(float x) { float xhalf=0.5f*x; int i=*(int*)&x; i=0x5f375a86-(i>>1); x=*(float*)&i; x=x*(1.5f-xhalf*x*x); x=x*(1.5f-xhalf*x*x); x=x*(1.5f-xhalf*x*x); return 1/x; } //外部接口 /*string h_p(string a,string b) { }*/ fuk strtofuk(string s) { fuk f; f.len=s.size(); for(int i=0;i<=f.len-1;i++) f.a[i]=s[i]; return f; } string fuktostr(fuk f) { string s; char c[f.len+1]; for(int i=0;i<=f.len-1;i++) c[i]=f.a[i+1]+‘0‘; s=c; return s; } #endif
时间: 2024-10-10 09:33:44