数学 ZJOI 2012 数列

Posted 既然选择了远方,便只顾风雨兼程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数学 ZJOI 2012 数列相关的知识,希望对你有一定的参考价值。

 
技术分享

技术分享

技术分享

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 using namespace std;
 5 const int maxn=110;
 6 struct ExtInt{
 7     int a[maxn],len;
 8     ExtInt(){
 9         memset(a,0,sizeof(a));
10         len=1;
11     }
12     void clear(){
13         memset(a,0,sizeof(a));
14         len=1;
15     }
16     int operator [](int x){
17         return a[x];
18     }
19     void Print(){
20         for(int i=len;i>=1;i--)
21             printf("%d",a[i]);
22         printf("\n");    
23     }
24 }ans,F;
25 
26 
27 
28 ExtInt operator /(ExtInt a,int x){
29     ExtInt ret;
30     for(int i=a.len,tot=0;i>=1;i--){
31         tot=tot*10+a[i];
32         ret.a[i]=tot/x;
33         tot%=x;
34     }
35     ret.len=a.len;
36     while(!ret[ret.len]&&ret.len>1)ret.len-=1;
37     return ret;    
38 }
39 
40 ExtInt operator +(ExtInt a,int x){
41     ExtInt ret;
42     for(int i=1,in=0;i<=a.len||in;i++){
43         ret.a[i]=a[i]+in+x%10;x/=10;
44         in=ret.a[i]/10;ret.a[i]%=10;
45     }
46     ret.len=a.len+1;
47     while(!ret[ret.len]&&ret.len>1)ret.len-=1;
48     return ret;
49 }
50 ExtInt operator +(ExtInt a,ExtInt x){
51     ExtInt ret;
52     for(int i=1,in=0;i<=max(a.len,x.len)||in;i++){
53         ret.a[i]=in+a[i]+x.a[i];
54         in=ret.a[i]/10;ret.a[i]%=10;
55     }
56     ret.len=max(a.len,x.len)+1;
57     while(!ret[ret.len]&&ret.len>1)ret.len-=1;
58     return ret;
59 }
60 
61 ExtInt p,q;
62 void Solve(ExtInt x){
63     if(x[1]==1&&x.len==1){
64         p=x;q.clear();
65         return;
66     }
67     Solve((x+1)/2);
68     if(x[1]&1)p=p+q;
69     else q=p+q;  
70 }
71 
72 char s[maxn];
73 int main(){
74     freopen("sequencezj.in","r",stdin);
75     freopen("sequencezj.out","w",stdout);
76     int T;
77     scanf("%d",&T);
78     while(T--){
79         scanf("%s",s+1);
80         int len=strlen(s+1);
81         for(int i=1;i<=len;i++)
82             F.a[len-i+1]=s[i]-0;
83         F.len=len;    
84         Solve(F);
85         p.Print();    
86     }
87     return 0;
88 }

 

以上是关于数学 ZJOI 2012 数列的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ2656 [Zjoi2012]数列(sequence)

BZOJ 26562656: [Zjoi2012]数列(sequence) (高精度)

bzoj 2656 [Zjoi2012]数列(sequence) 递推+高精度

[ZJOI 2012]数列

2656: [Zjoi2012]数列(sequence)(递归+高精度)

☆ [ZJOI2006] 书架 「平衡树维护数列」