【题目链接】

  http://www.lydsy.com/JudgeOnline/problem.php?id=2656

【题意】

  计算大数递推式

【思路】

  高精度

【代码】

 #include<cstdio>
#include<cstring>
#include<iostream>
using namespace std; const int maxn = ;
const int base = 1e4; struct Bign {
int len,N[maxn];
int& operator[](const int& i){
return N[i];
}
void init() {
len=;
memset(N,,sizeof(N));
}
};
Bign tmp; char s[maxn];
void read(Bign& A)
{
A.init(),tmp.init();
scanf("%s",s+);
int i,j;
tmp.len=strlen(s+);
for(int i=;i<=tmp.len;i++)
tmp[i]=s[tmp.len+-i]-'';
A.len=(tmp.len-)/ +;
for(i=;i<=A.len;i++) {
for(j=;j<=;j++)
A[i]=A[i]*+tmp[(i-)*+(-j)];
}
}
void print(Bign A)
{
printf("%d",A[A.len]);
for(int i=A.len-;i;i--)
printf("%04d",A[i]);
puts("");
}
Bign operator + (Bign A,Bign B)
{
A.len=max(B.len,A.len);
for(int i=;i<=A.len;i++) {
A[i]+=B[i];
A[i+]+=A[i]/base;
A[i]%=base;
}
while(A[A.len+]) A.len++;
return A;
}
Bign operator + (Bign A,int x)
{
Bign B; B.init(); B[]=x;
return A+B;
}
Bign operator / (Bign A,int p)
{
for(int i=;i<=A.len;i++) {
if(A[i]&) A[i-]+=base/p;
A[i]/=p;
}
while(!A[A.len]&&A.len) A.len--;
return A;
} Bign p,q,n; void F(Bign x)
{
if(x.len== && x[]==) {
p=x; q.init(); return ;
}
F((x+)/);
if(x[]&) p=p+q;
else q=p+q;
} int main()
{
int T; scanf("%d",&T);
while(T--) {
p.init(),q.init();
read(n);
F(n);
print(p);
}
return ;
}

Ps:每次做高精度都会涨姿势 >_<

bzoj 2656 [Zjoi2012]数列(sequence)(高精度)的更多相关文章

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

    2656: [Zjoi2012]数列(sequence) Time Limit: 2 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Descri ...

  2. 【BZOJ 2656】2656: [Zjoi2012]数列(sequence) (高精度)

    2656: [Zjoi2012]数列(sequence) Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 1499  Solved: 786 Descri ...

  3. [BZOJ 2656][ZJOI2012]数列(递归+高精度)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2656 分析: 很容易想到递归分治,但遇到奇数时候f[i]=f[i/2]+f[i/2+1 ...

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

    好久没写题了T T NOIP 期中考双血崩 显然f(x)=f(x>>1)+f((x>>1)+1),考虑每次往x>>1递归,求出f(x),复杂度O(logN) 我们设 ...

  5. 【bzoj2656】[Zjoi2012]数列(sequence) 高精度

    题目描述 给出数列 $A$ 的递推公式如下图所示,$T$ 次给定 $n$ ,求 $A_n$ . 输入 输入文件第一行有且只有一个正整数T,表示测试数据的组数.第2-T+1行,每行一个非负整数N. 输出 ...

  6. [BZOJ2656][codevs1207][Zjoi2012]数列(sequence)

    [BZOJ2656][codevs1207][Zjoi2012]数列(sequence) 试题描述 小白和小蓝在一起上数学课,下课后老师留了一道作业,求下面这个数列的通项公式: 小白作为一个数学爱好者 ...

  7. bzoj2656 [Zjoi2012]数列(sequence)

    题目链接 好久没写高精度了,调了很久QAQ 如果直接递归计算答案的话肯定会T 发现一个数不管是分成一奇一偶还是直接>>1,都会重复计算很多东西 我们只需要在递归的时候实时维护一个xx(an ...

  8. BZOJ2656 [Zjoi2012]数列(sequence)[模拟]

    这个递推式子可以发现$i$是偶数下标可以缩一半,是奇数下标就可以拆成两个下标,$\lfloor \frac{i}{2} \rfloor$以及$\lfloor \frac{i}{2}+1 \rfloor ...

  9. 洛谷 P2609 [ZJOI2012]数列 解题报告

    P2609 [ZJOI2012]数列 题目描述 小白和小蓝在一起上数学课,下课后老师留了一道作业,求下面这个数列的通项公式: A(0)=0 A(1)=1 A(2i)=A(i) (对于任意 i>0 ...

随机推荐

  1. 【链表】BZOJ 2288: 【POJ Challenge】生日礼物

    2288: [POJ Challenge]生日礼物 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 382  Solved: 111[Submit][S ...

  2. PAT-乙级-1007. 素数对猜想 (20)

    1007. 素数对猜想 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 让我们定义 dn 为:dn = ...

  3. notepad++ 开启/关闭 记住最后打开的文件

    开启记住最后打开的文件 1) 6.3以前版本如下设置: 设置-->首选项-->其他 把左下角的 "记住最后打开文件" 勾选. 2) 6.3以后版本如下设置: 设置--& ...

  4. Tiny6410 交叉编译helloworld程序

    在工作目录下建立helloworld.c文件 #include <stdio.h> main() { printf("helloworld!\n"); } 保存关闭后. ...

  5. Python性能鸡汤

    http://pythoner.org/wiki/257/ 毫无疑问:Python程序没有编译型语言高效快速. 甚至Python拥护者们会告诉你Python不适合这些领域. 然而,YouTube已用P ...

  6. highcharts 柱状图

    <!doctype html> <html lang="en"> <head> <script type="text/javas ...

  7. Ubuntu中安装DiscuzX2

    http://blog.csdn.net/kevin_ysu/article/details/7452938 一.Apache的安装 Apache作为一个功能强大的Web程序,自然是架建Web服务器的 ...

  8. Qt: 内建对话框(各种对话框都有了,且用到了qobject_cast解析sender的技术)

    #include "BuiltinDialog.h" #include <QtGui/QTextEdit> #include <QtGui/QPushButton ...

  9. MyBatis的动态SQL操作--查询

    查询条件不确定,需要根据情况产生SQL语法,这种情况叫动态SQL,即根据不同的情况生成不同的sql语句. 模拟一个场景,在做多条件搜索的时候,

  10. eay ui iframe 下常问题

    背景:客户要使用https进行登录,把原来的登录做到一个小框,用iframe嵌进来进行登录. 客户拥有4个域名,但只在xxx.com域名中购买了安全证书,所以多个域名下登录所用的iframe中src是 ...