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 ...
随机推荐
- 【链表】BZOJ 2288: 【POJ Challenge】生日礼物
2288: [POJ Challenge]生日礼物 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 382 Solved: 111[Submit][S ...
- PAT-乙级-1007. 素数对猜想 (20)
1007. 素数对猜想 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 让我们定义 dn 为:dn = ...
- notepad++ 开启/关闭 记住最后打开的文件
开启记住最后打开的文件 1) 6.3以前版本如下设置: 设置-->首选项-->其他 把左下角的 "记住最后打开文件" 勾选. 2) 6.3以后版本如下设置: 设置--& ...
- Tiny6410 交叉编译helloworld程序
在工作目录下建立helloworld.c文件 #include <stdio.h> main() { printf("helloworld!\n"); } 保存关闭后. ...
- Python性能鸡汤
http://pythoner.org/wiki/257/ 毫无疑问:Python程序没有编译型语言高效快速. 甚至Python拥护者们会告诉你Python不适合这些领域. 然而,YouTube已用P ...
- highcharts 柱状图
<!doctype html> <html lang="en"> <head> <script type="text/javas ...
- Ubuntu中安装DiscuzX2
http://blog.csdn.net/kevin_ysu/article/details/7452938 一.Apache的安装 Apache作为一个功能强大的Web程序,自然是架建Web服务器的 ...
- Qt: 内建对话框(各种对话框都有了,且用到了qobject_cast解析sender的技术)
#include "BuiltinDialog.h" #include <QtGui/QTextEdit> #include <QtGui/QPushButton ...
- MyBatis的动态SQL操作--查询
查询条件不确定,需要根据情况产生SQL语法,这种情况叫动态SQL,即根据不同的情况生成不同的sql语句. 模拟一个场景,在做多条件搜索的时候,
- eay ui iframe 下常问题
背景:客户要使用https进行登录,把原来的登录做到一个小框,用iframe嵌进来进行登录. 客户拥有4个域名,但只在xxx.com域名中购买了安全证书,所以多个域名下登录所用的iframe中src是 ...