bzoj 2656 [Zjoi 2012] 수열 (sequence) (고밀도)
[제목 링크]
http://www.lydsy.com/JudgeOnline/problem.php?id=2656
[제목 의 뜻]
계산 대수 전달 식
[사고방식]
고밀도
【 코드 】
1 #include<cstdio>
2 #include<cstring>
3 #include<iostream>
4 using namespace std;
5
6 const int maxn = 105;
7 const int base = 1e4;
8
9 struct Bign {
10 int len,N[maxn];
11 int& operator[](const int& i){
12 return N[i];
13 }
14 void init() {
15 len=1;
16 memset(N,0,sizeof(N));
17 }
18 };
19 Bign tmp; char s[maxn];
20 void read(Bign& A)
21 {
22 A.init(),tmp.init();
23 scanf("%s",s+1);
24 int i,j;
25 tmp.len=strlen(s+1);
26 for(int i=1;i<=tmp.len;i++)
27 tmp[i]=s[tmp.len+1-i]-'0';
28 A.len=(tmp.len-1)/4 +1;
29 for(i=1;i<=A.len;i++) {
30 for(j=1;j<=4;j++)
31 A[i]=A[i]*10+tmp[(i-1)*4+(5-j)];
32 }
33 }
34 void print(Bign A)
35 {
36 printf("%d",A[A.len]);
37 for(int i=A.len-1;i;i--)
38 printf("%04d",A[i]);
39 puts("");
40 }
41 Bign operator + (Bign A,Bign B)
42 {
43 A.len=max(B.len,A.len);
44 for(int i=1;i<=A.len;i++) {
45 A[i]+=B[i];
46 A[i+1]+=A[i]/base;
47 A[i]%=base;
48 }
49 while(A[A.len+1]) A.len++;
50 return A;
51 }
52 Bign operator + (Bign A,int x)
53 {
54 Bign B; B.init(); B[1]=x;
55 return A+B;
56 }
57 Bign operator / (Bign A,int p)
58 {
59 for(int i=1;i<=A.len;i++) {
60 if(A[i]&1) A[i-1]+=base/p;
61 A[i]/=p;
62 }
63 while(!A[A.len]&&A.len) A.len--;
64 return A;
65 }
66
67 Bign p,q,n;
68
69 void F(Bign x)
70 {
71 if(x.len==1 && x[1]==1) {
72 p=x; q.init(); return ;
73 }
74 F((x+1)/2);
75 if(x[1]&1) p=p+q;
76 else q=p+q;
77 }
78
79 int main()
80 {
81 int T; scanf("%d",&T);
82 while(T--) {
83 p.init(),q.init();
84 read(n);
85 F(n);
86 print(p);
87 }
88 return 0;
89 }
Ps: 높 은 정밀 도 를 할 때마다 자세 가 올 라 갑 니 다 > <
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.