bzoj 2656 [Zjoi2012]数列(sequence)(高精度)
【题目链接】
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)(高精度)的更多相关文章
- bzoj 2656 [Zjoi2012]数列(sequence) 递推+高精度
2656: [Zjoi2012]数列(sequence) Time Limit: 2 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Descri ...
- 【BZOJ 2656】2656: [Zjoi2012]数列(sequence) (高精度)
2656: [Zjoi2012]数列(sequence) Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 1499 Solved: 786 Descri ...
- [BZOJ 2656][ZJOI2012]数列(递归+高精度)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2656 分析: 很容易想到递归分治,但遇到奇数时候f[i]=f[i/2]+f[i/2+1 ...
- 2656: [Zjoi2012]数列(sequence)(递归+高精度)
好久没写题了T T NOIP 期中考双血崩 显然f(x)=f(x>>1)+f((x>>1)+1),考虑每次往x>>1递归,求出f(x),复杂度O(logN) 我们设 ...
- 【bzoj2656】[Zjoi2012]数列(sequence) 高精度
题目描述 给出数列 $A$ 的递推公式如下图所示,$T$ 次给定 $n$ ,求 $A_n$ . 输入 输入文件第一行有且只有一个正整数T,表示测试数据的组数.第2-T+1行,每行一个非负整数N. 输出 ...
- [BZOJ2656][codevs1207][Zjoi2012]数列(sequence)
[BZOJ2656][codevs1207][Zjoi2012]数列(sequence) 试题描述 小白和小蓝在一起上数学课,下课后老师留了一道作业,求下面这个数列的通项公式: 小白作为一个数学爱好者 ...
- bzoj2656 [Zjoi2012]数列(sequence)
题目链接 好久没写高精度了,调了很久QAQ 如果直接递归计算答案的话肯定会T 发现一个数不管是分成一奇一偶还是直接>>1,都会重复计算很多东西 我们只需要在递归的时候实时维护一个xx(an ...
- BZOJ2656 [Zjoi2012]数列(sequence)[模拟]
这个递推式子可以发现$i$是偶数下标可以缩一半,是奇数下标就可以拆成两个下标,$\lfloor \frac{i}{2} \rfloor$以及$\lfloor \frac{i}{2}+1 \rfloor ...
- 洛谷 P2609 [ZJOI2012]数列 解题报告
P2609 [ZJOI2012]数列 题目描述 小白和小蓝在一起上数学课,下课后老师留了一道作业,求下面这个数列的通项公式: A(0)=0 A(1)=1 A(2i)=A(i) (对于任意 i>0 ...
随机推荐
- sql批量删除wordpress所有日志修订revision
wordpress日志修订是所有速度慢的罪恶之源,每次在后台发布或修改文章的时候,数据库都会产生一个revision版本的记录,几百篇日志会有几千条日志修订的记录,如果更多文章的话,那一个网页打开可能 ...
- 如何在CHROME里调试前端代码?
以前看前端们调得很神的, 刚看书到这里,作一个记录,演练了一下,确实有点神!!! :) <!DOCTYPE html> <html lang="en"> & ...
- java thread类和runable
java thread 类其实和其他类是一样的.有自己的属性和方法.以及有一个重写的run方法 不同的是:必须重写run()方法. run()方法是线程thread启动后cpu调用运行的程序代码. r ...
- 212. Word Search II
题目: Given a 2D board and a list of words from the dictionary, find all words in the board. Each word ...
- SRM 586 DIV1 L1
可以化简为求n条线段的最大覆盖问题,需要注意的是对于实数而言. #include <iostream> #include <vector> #include <strin ...
- python脚本实例002- 利用requests库实现应用登录
#! /usr/bin/python # coding:utf-8 #导入requests库 import requests #获取会话 s = requests.session() #创建登录数据 ...
- poj 3009 Curling 2.0( dfs )
题目:http://poj.org/problem?id=3009 参考博客:http://www.cnblogs.com/LK1994/ #include <iostream> #inc ...
- poj 3687 Labeling Balls(拓扑排序)
题目:http://poj.org/problem?id=3687题意:n个重量为1~n的球,给定一些编号间的重量比较关系,现在给每个球编号,在符合条件的前提下使得编号小的球重量小.(先保证1号球最轻 ...
- bzoj2757
非常神的数位dp,我调了几乎一天首先和bzoj3131类似,乘积是可以预处理出来的,注意这里乘积有一个表示的技巧因为这里质因数只有2,3,5,7,所以我们可以表示成2^a*3^b*5^c*7^d,也就 ...
- BZOJ_1020_[SHOI2008]_安全的航线flight_(计算几何+二分)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1020 给出一条航线(折线),给出\(c\)个陆地(多边形).求航线上距离陆地的最近距离最远的距 ...