2656: [Zjoi2012]数列(sequence)

Time Limit: 2 Sec  Memory Limit: 128 MB
Submit: 1663  Solved: 860
[Submit][Status][Discuss]

Description

小白和小蓝在一起上数学课,下课后老师留了一道作业,求下面这个数列的通项公式:

小白作为一个数学爱好者,很快就计算出了这个数列的通项公式。于是,小白告诉小蓝自己已经做出来了,但为了防止小蓝抄作业,小白并不想把公式公布出来。于是小白为了向小蓝证明自己的确做出来了此题以达到其炫耀的目的,想出了一个绝妙的方法:即让小蓝说一个正整数N,小白则说出 的值,如果当N很大时小白仍能很快的说出正确答案,这就说明小白的确得到了公式。但这个方法有一个很大的漏洞:小蓝自己不会做,没法验证小白的答案是否正确。作为小蓝的好友,你能帮帮小蓝吗?

Input

输入文件第一行有且只有一个正整数T,表示测试数据的组数。

第2~T+1行,每行一个非负整数N。

Output

输出文件共包含T行。

第i行应包含一个不含多余前缀0的数,它的值应等于An(n为输入数据中第i+1行被读入的整数)

【样例输入】

Sample Input

3
1
3
10

Sample Output

1
2
3

假设n是奇数

那么有F(n) = F(n/2)+F(n/2+1) = 2F(n/4)+F(n/4+1) = …

可以logn的复杂度递归

n是大数,需要高精度

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char str[105];
typedef struct Bnum
{int l;int s[108];Bnum(){l = 0;memset(s, 0, sizeof(s));}
}Bnum;
Bnum operator + (Bnum x, Bnum y)
{int i;Bnum z;z.l = max(x.l, y.l);for(i=1;i<=z.l;i++){z.s[i] += x.s[i]+y.s[i];if(z.s[i]>9){z.s[i+1] += 1;z.s[i] %= 10;}}while(z.s[z.l+1])z.l++;return z;
}
Bnum operator - (Bnum x, Bnum y)
{int i;Bnum z;z.l = max(x.l, y.l);for(i=1;i<=z.l;i++){if(x.s[i]<y.s[i]){x.s[i] += 10;x.s[i+1]--;}z.s[i] += x.s[i]-y.s[i];if(z.s[i]>9){z.s[i+1] += z.s[i]/10;z.s[i] %= 10;}}while(z.s[z.l]==0)z.l--;return z;
}
Bnum operator * (Bnum x, Bnum y)
{int i, j;Bnum z;z.l = x.l+y.l-1;for(i=1;i<=x.l;i++){for(j=1;j<=y.l;j++){z.s[i+j-1] += x.s[i]*y.s[j];if(z.s[i+j-1]>9){z.s[i+j] += z.s[i+j-1]/10;z.s[i+j-1] %= 10;}}}while(z.s[z.l+1])z.l++;return z;
}
Bnum operator ^ (Bnum x, int y)
{Bnum z, u;z.l = z.s[1] = 1, u = x;while(y){if(y%2==1)z = z*u;u = u*u;y /= 2;}return z;
}
Bnum Half(Bnum x)
{int i, now;Bnum z;z.l = x.l, now = 0;for(i=z.l;i>=1;i--){z.s[i] = (now*10+x.s[i])/2;if(x.s[i]%2)now = 1;elsenow = 0;}while(z.s[z.l]==0)z.l--;return z;
}
void Print(Bnum x)
{int i;for(i=x.l;i>=1;i--)printf("%d", x.s[i]);printf("\n");
}
int main(void)
{Bnum x, y, e, a, b;int T, i;scanf("%d", &T);while(T--){scanf("%s", str+1);x.l = strlen(str+1);if(x.l==1 && str[1]=='0'){printf("0\n");continue;}for(i=x.l;i>=1;i--)x.s[i] = str[x.l-i+1]-'0';while(x.s[1]%2==0)x = Half(x);e.l = e.s[1] = 1;x = Half(x), y = x+e;a.l = a.s[1] = b.l = b.s[1] = 1;while(1){//Print(a); Print(x);//Print(b); Print(y);if(x.l==1 && x.s[1]==1){if(y.l==1 && y.s[1]==2)Print(a+b);elsePrint(a);break;}if(y.l==1 && y.s[1]==1){if(x.l==1 && x.s[1]==2)Print(a+b);elsePrint(b);break;}if(x.s[1]%2==0){a = a+b;x = Half(x);y = x+e;}else{b = a+b;y = Half(y);x = y-e;}}}return 0;
}

bzoj 2656: [Zjoi2012]数列(sequence)(简单高精度模板2.0)相关推荐

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

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

  2. 简单高精度模板(bzoj 1089: [SCOI2003]严格n元树)

    1089: [SCOI2003]严格n元树 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 1831  Solved: 913 [Submit][Sta ...

  3. Bzoj2656 [Zjoi2012]数列(sequence)

    Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 1448  Solved: 762 [Submit][Status][Discuss] Descript ...

  4. angular2 学习二 最简单的模板

    2019独角兽企业重金招聘Python工程师标准>>> 最简单的模板 组件的View注解用来声明组件的外观,它最重要的属性就是template - 模板. Angular2的模板是兼 ...

  5. 实现一个简单的模板引擎,输入模板和数据,输出html

    实现一个简单的模板引擎,输入模板和数据,输出html 示例: 输入: "<div>{{$1}}({{$2}}){{$3}}</div>",["第一 ...

  6. 简单干净的Emlog6.0.1技术导航模板源码-视频教程

    简介: 简单干净的Emlog6.0.1技术导航模板源码:一款非常简洁的Emlog6.0.1技术导航的模板,有着无框架.精简.加载迅速著称,还有些许实用的功能,此模板是有史以来第一款Emlog完整版的技 ...

  7. UI设计干货素材|简单素材模板教你分分钟提高UI设计水平!

    对于初学者来说,设计经常会没有思路 为了保证更优用户体验 更是十八般武艺,样样精通 看看这些优秀的简单素材模板教你分分钟提高UI设计水平! 视觉动效 能有效提升用户满足感,刺激其多次操作 语音援助UI ...

  8. python随机数列_Python2随机数列生成器简单实例

    本文实例讲述了Python2随机数列生成器.分享给大家供大家参考,具体如下: #filename:randNumber.py import random while True: try: row=in ...

  9. Node.js 动手实现简单的模板引擎(列表渲染)

    准备HTML模板文件index.html <!DOCTYPE html> <html lang="en"> <head><meta cha ...

最新文章

  1. python处理xlsx[联合openpyxl与pandas]
  2. c语言 linux常用函数,C语言常用函数
  3. 在线字符串转列表工具
  4. Julia: h5write ,h5read 与ASCIIString、Float64及效率比较
  5. windows和Linux下西部数据C1门解决方法
  6. sql基础语句(联表查询)
  7. 向量检索基础方法总结
  8. 笔记本电脑如何用c语言开无线网卡,教你如何用无线网卡做wifi热点(适用笔记本)...
  9. Flutter系列之Navigator组件使用
  10. 迅雷看看引领高清内容多屏合一新趋势
  11. 惠普 hp3414 笔记本 电脑 驱动 drivers
  12. 通过php上传和下载rar/zip压缩文件
  13. html+css3跑马灯(抖音我们的照片记录幸福到永远)
  14. html实现光碟转动效果,flash脚本roll应用 制作转动的光碟动画效果
  15. 计算机主机突然断电有什么影响,台式机突然断电有什么危害
  16. 关于 pandas 解析 json 文件和其他类型文件的结果中日期格式数据类型不一致的问题
  17. rapid Scada软件架构
  18. STM32f103ZET6引脚通道(ADC和TIM)
  19. windows上注册控件/反注册控件
  20. 拼多多创始人黄峥身价达3200亿,超越马云成中国第二大富豪

热门文章

  1. python怎么使用-如何使用python进行第一个机器学习项目(详细教程篇)
  2. python简单程序实例-Python简单基础小程序的实例代码
  3. 30岁学python有前途吗-为什么做大数据一定要学Python?
  4. 国外大神一张图学会python-学习Python不得不关注和学习的国外大神博客
  5. 10 个 PHP 常见安全问题(实例讲解)
  6. pagerank数据集_机器学习十大经典算法-PageRank(附实践代码)
  7. 剑指offer没有java版吗_剑指Offer(Java版) 持续更新中
  8. ant a-table 表格数据同步
  9. 关于axios中'$router' of undefined问题
  10. 【狂神css笔记】CSS介绍选择器