卡片式设计 网站,做网站自己买服务器吗,轻松建立网站,怎样自己做免费网站Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 1448 Solved: 762[Submit][Status][Discuss]Description 小白和小蓝在一起上数学课#xff0c;下课后老师留了一道作业#xff0c;求下面这个数列的通项公式#xff1a; 小白作为一个数学爱好者#xff0c;很快就计算出了…Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 1448 Solved: 762[Submit][Status][Discuss] Description 小白和小蓝在一起上数学课下课后老师留了一道作业求下面这个数列的通项公式 小白作为一个数学爱好者很快就计算出了这个数列的通项公式。于是小白告诉小蓝自己已经做出来了但为了防止小蓝抄作业小白并不想把公式公布出来。于是小白为了向小蓝证明自己的确做出来了此题以达到其炫耀的目的想出了一个绝妙的方法即让小蓝说一个正整数N小白则说出 的值如果当N很大时小白仍能很快的说出正确答案这就说明小白的确得到了公式。但这个方法有一个很大的漏洞小蓝自己不会做没法验证小白的答案是否正确。作为小蓝的好友你能帮帮小蓝吗 Input 输入文件第一行有且只有一个正整数T表示测试数据的组数。 第2T1行每行一个非负整数N。 Output 输出文件共包含T行。 第i行应包含一个不含多余前缀0的数它的值应等于An(n为输入数据中第i1行被读入的整数) 【样例输入】 Sample Input 3 1 3 10 Sample Output 1 2 3 HINT T20,N10^100 Source 递归高精度 暴力递归只能解决10^8的问题 ↑优化高精度无果之后觉得应该可以找规律。 发现算奇数的时候下面的偶数都算过了。 那么加个类似记忆化的东西就行 1 /*by SilverN*/2 #includealgorithm3 #includeiostream4 #includecstring5 #includecstdio6 #includecmath7 #includevector8 #define LL long long9 using namespace std;
10 const int mxn305;
11 int read(){
12 int x0,f1;char chgetchar();
13 while(ch0 || ch9){if(ch-)f-1;chgetchar();}
14 while(ch0 ch9){xx*10ch-0;chgetchar();}
15 return x*f;
16 }
17 struct NUM{
18 int len;
19 int a[mxn];
20 friend NUM operator (NUM a,NUM b){
21 a.lenmax(a.len,b.len);
22 for(int i1;ia.len;i){
23 a.a[i]b.a[i];
24 if(a.a[i]9){
25 a.a[i1]a.a[i]/10;
26 a.a[i]%10;
27 }
28 }
29 if(a.a[a.len1])a.len;
30 return a;
31 }
32 friend NUM operator / (NUM a,int b){
33 for(int ia.len;i;i--){
34 a.a[i-1](a.a[i]%b)*10;
35 a.a[i]/b;
36 }
37 while(a.len1 !a.a[a.len]) a.len--;
38 return a;
39 }
40 }N,p,q;
41 void Debug(NUM x){
42 for(int ix.len;i;i--)
43 printf(%d,x.a[i]);
44 printf(\n);
45 return;
46 }
47 void calc(NUM x){
48 // NUM tmp;
49 if(x.len1 x.a[1]1){
50 px;
51 q.len1;memset(q.a,0,sizeof q.a);
52 q.a[1]1;
53 return;
54 }
55 calc(x/2);
56 if(x.a[1]1)ppq;
57 else qqp;
58 // return tmp;
59 }
60 char s[mxn];
61 int T;
62 int main(){
63 // freopen(sequence.in,r,stdin);
64 // freopen(sequence.out,w,stdout);
65 Tread();
66 int i,j;
67 p.len1;p.a[1]1;
68 q.len1;q.a[1]0;
69 while(T--){
70 memset(N.a,0,sizeof N.a);
71 //
72 scanf(%s,s1);
73 int lenstrlen(s1);
74 for(i1;ilen;i){
75 N.a[i]s[len-i1]-0;
76 }
77 N.lenlen;
78 calc(N);
79 Debug(p);
80 }
81 return 0;
82 } 转载于:https://www.cnblogs.com/SilverNebula/p/6441684.html