bzoj2656 [Zjoi2012]数列(sequence)
好久没写高精度了,调了很久QAQ
如果直接递归计算答案的话肯定会T
发现一个数不管是分成一奇一偶还是直接>>1,都会重复计算很多东西
我们只需要在递归的时候实时维护一个xx(ans[x])和xxx(ans[x-1])
一层一层的选择更新xx或xxx就好
(请无视递归函数的名称和里面乱搞的数字)
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<string>
#include<cmath>
#include<ctime>
#include<queue>
#include<stack>
#include<map>
#include<set>
#define rre(i,r,l) for(int i=(r);i>=(l);i--)
#define re(i,l,r) for(int i=(l);i<=(r);i++)
#define Clear(a,b) memset(a,b,sizeof(a))
#define inout(x) printf("%d",(x))
#define douin(x) scanf("%lf",&x)
#define strin(x) scanf("%s",(x))
#define LLin(x) scanf("%lld",&x)
#define op operator
#define CSC main
typedef unsigned long long ULL;
typedef const int cint;
typedef long long LL;
using namespace std;
void inin(int &ret)
{
ret=;int f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=;ch=getchar();}
while(ch>=''&&ch<='')ret*=,ret+=ch-'',ch=getchar();
ret=f?-ret:ret;
}
struct hint
{
int a[],len;
void clear(){Clear(a,);len=;}
void maintain()
{
for(len=;len>=;len--)
if(a[len])break;
}
void in()
{
char ch;len=;
while(ch<''||ch>'')ch=getchar();
while(ch>=''&&ch<='')a[++len]=ch-'',ch=getchar();
re(i,,len>>)swap(a[i],a[len-i+]);
}
hint op / (int x)
{
hint rhs=*this;
int ex=;
rre(i,rhs.len,)
{
ex*=;
rhs.a[i]+=ex;
ex=rhs.a[i]%;
rhs.a[i]>>=;
if(!rhs.a[i]&&i==len)rhs.len--;
}
rhs.a[rhs.len+]=;
return rhs;
}
hint op + (int x)
{
hint rhs=*this;
int ex=;
re(i,,rhs.len)
{
rhs.a[i]+=ex;
ex=rhs.a[i]/;
if(rhs.a[i]==&&i==len)rhs.len++;
rhs.a[i]%=;
}
rhs.a[rhs.len+]=;
return rhs;
}
hint op + (hint &xx)
{
hint rhs=*this;
rhs.len=max(rhs.len,xx.len);
int ex=;
re(i,,rhs.len)
{
rhs.a[i]+=xx.a[i]+ex;
ex=rhs.a[i]/;
if(rhs.a[i]>)rhs.len++;
rhs.a[i]%=;
}
rhs.a[rhs.len+]=;
return rhs;
}
bool op == (int x)
{
return len==&&a[]==;
}
bool op & (int x)
{
return a[]&;
}
void out()
{
rre(i,len,)printf("%d",a[i]);
}
};
int n;hint x,xx,xxx;
void wocao(hint x)
{
if(x==3.145926535897932384626433823)
{
xx=x;xxx.clear();
return ;
}
wocao((x+/3.14)/);
if(x&)xx=xx+xxx,xx.maintain();
else xxx=xx+xxx,xxx.maintain();
}
int main()
{
freopen("in.in","r",stdin);
freopen("out.out","w",stdout);
inin(n);
while(n--)
{
x.clear();
x.in();
wocao(x);
xx.out();cout<<"\n";
}
return ;
}
bzoj2656 [Zjoi2012]数列(sequence)的更多相关文章
- BZOJ2656 [Zjoi2012]数列(sequence)[模拟]
这个递推式子可以发现$i$是偶数下标可以缩一半,是奇数下标就可以拆成两个下标,$\lfloor \frac{i}{2} \rfloor$以及$\lfloor \frac{i}{2}+1 \rfloor ...
- [BZOJ2656][codevs1207][Zjoi2012]数列(sequence)
[BZOJ2656][codevs1207][Zjoi2012]数列(sequence) 试题描述 小白和小蓝在一起上数学课,下课后老师留了一道作业,求下面这个数列的通项公式: 小白作为一个数学爱好者 ...
- 【BZOJ 2656】2656: [Zjoi2012]数列(sequence) (高精度)
2656: [Zjoi2012]数列(sequence) Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 1499 Solved: 786 Descri ...
- bzoj 2656 [Zjoi2012]数列(sequence) 递推+高精度
2656: [Zjoi2012]数列(sequence) Time Limit: 2 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Descri ...
- 【bzoj2656】[Zjoi2012]数列(sequence) 高精度
题目描述 给出数列 $A$ 的递推公式如下图所示,$T$ 次给定 $n$ ,求 $A_n$ . 输入 输入文件第一行有且只有一个正整数T,表示测试数据的组数.第2-T+1行,每行一个非负整数N. 输出 ...
- BZOJ2656 [Zjoi2012]数列
Description 小白和小蓝在一起上数学课,下课后老师留了一道作业,求下面这个数列的通项公式: $$\begin{aligned}A_0 &= 0\\A_1 &= 1\\A_{2 ...
- bzoj 2656 [Zjoi2012]数列(sequence)(高精度)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2656 [题意] 计算大数递推式 [思路] 高精度 [代码] #include<c ...
- 2656: [Zjoi2012]数列(sequence)(递归+高精度)
好久没写题了T T NOIP 期中考双血崩 显然f(x)=f(x>>1)+f((x>>1)+1),考虑每次往x>>1递归,求出f(x),复杂度O(logN) 我们设 ...
- 洛谷 P2609 [ZJOI2012]数列 解题报告
P2609 [ZJOI2012]数列 题目描述 小白和小蓝在一起上数学课,下课后老师留了一道作业,求下面这个数列的通项公式: A(0)=0 A(1)=1 A(2i)=A(i) (对于任意 i>0 ...
随机推荐
- 手把手教你用 Git(转)
转自:http://blog.jobbole.com/78960/ 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统, ...
- tortoiseSVN版本合并(merge)
原文地址:http://blog.163.com/qq371557620@yeah/blog/static/8428365820172110320574/ 编码过程中,我们经常会遇到需要多个分支并行开 ...
- 万恶之源 - Python生成器
生成器 首先我们来看看什么是个生成器,生成器本质就是迭代器 在python中有三种方式来获取生成器 1.通过生成器函数 2.通过各种推到式来实现生成器 3.通过数据的转换也可以获取生成器 首先,我们先 ...
- [LeetCode] 98. Validate Binary Search Tree_Medium
Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...
- 【转】JsonPath教程
https://blog.csdn.net/koflance/article/details/63262484 1. 介绍 类似于XPath在xml文档中的定位,JsonPath表达式通常是用来路径检 ...
- GBDT调参总结
一.GBDT类库弱学习器参数 二.回归 数据集:已知用户的30个特征,预测用户的信用值 from sklearn.ensemble import GradientBoostingRegressor f ...
- Entity Framework Code First(Mysql)
1.添加NuGet包 引用NuGet包:EntityFramework6.1.3.MySql.Data.Entity6.9.8 2.修改配置 SqlServer配置: <add name=&qu ...
- idc函数大全
A80_addcA80_addcixA80_addciyA80_addixA80_addiyA80_cmpdA80_cmpiA80_im0A80_im1A80_im2A80_jrcA80_jrncA8 ...
- 办法总比困难多--JMeter压测小记
标签: JMeter, 代理接口 前段时间溢+支付接口慢,有商户直接反映掉单严重.这时,我接到了压测溢+支付接口的任务.JMeter我并不熟悉,公司也没有搞自动化测试的QA,一开始team里的一个同学 ...
- ASP.NET Core 启动流程图
简洁描述: 一 WebHostBuilder.Build() =>1注入公共的实例 2创建WebHost实例 3注入自定义实例 4创建IServer 5添加中间件(_components集合 ...