Jzoj3769【NOI2015模拟8.14】A+B
来源:互联网 发布:天互数据 图片 编辑:程序博客网 时间:2024/05/18 23:55
完成斐波那契进制下的加法运算
第一位为1,第二位为2,依次类推。。
这里其实很简单,只是要考虑一下进位即可
首先连续两位不为零直接向前进位即可
但是不能解决问题,因为可能出现一个位上面的值大于1
那么我们可以这样做,设连续的四位分别为:0,0,2,0
那么我们可以将其变成1,0,0,1
这样就相当于一次进位了,多次重复以上的进位过程即可
这里可以加上第0位方便运算
#include<stdio.h>#include<algorithm>using namespace std;int n,m,a[2000020],b[2000020],t,M;int main(){scanf("%d",&n); for(int i=1;i<=n;++i) scanf("%d",a+i);scanf("%d",&m); for(int i=1;i<=m;++i) scanf("%d",b+i);t=M=max(n,m)+30; if(a[1]) b[!b[1]]=1; a[1]=0;for(int i=1;i<=t;++i) b[i]+=a[i];for(int C=1;(1<<C)<=M;++C){for(int i=1;i<=t;++i){if(b[i]&&b[i-1]){int t=min(b[i],b[i-1]);b[i+1]+=t; b[i]-=t; b[i-1]-=t;}}for(int i=++t;i>0;--i){if(b[i]>1){ b[i+1]++; b[i]-=2;if(i>1) b[i-2]++;}}}while(b[t]==0) t--;printf("%d ",t); b[1]+=b[0];for(int i=1;i<=t;++i) printf("%d ",b[i]);}
阅读全文
1 0
- 【jzoj3769】【NOI2015模拟8.14】【A+B】
- Jzoj3769【NOI2015模拟8.14】A+B
- A+B【NOI2015模拟8.14】
- JZOJ 3769. 【NOI2015模拟8.14】A+B
- 【NOI2015模拟YDC】游戏
- poj_1000 A+B Problem 模拟
- PAT-B] 1017. A除以B [模拟]
- JZOJ3975. 【NOI2015模拟1.17】串
- 【NOI2015模拟9.9】文理分科
- 最短路【NOI2015模拟8.17】
- HDU2054 A == B ? 模拟题
- 【MAP模拟】SDUT 1471 A + B problem
- hdoj 1230 火星A+B 【模拟】
- HDU1228 A+B 字符串模拟题
- HDU1230 火星A+B 加法模拟题
- 3.1入门模拟B1016.部分A+B
- hdu 1228 A+B(简单模拟)
- 【模拟】洛谷 P1001 A+B Problem
- JS库和框架
- linux环境下python 库模块安装
- windows下TensorFlow完整安装流程及出错解决方案
- C++零碎基础知识点(一)
- Golang使用QConf教程
- Jzoj3769【NOI2015模拟8.14】A+B
- Spring框架——ioc实现原理
- 准大四实习找工作小纪
- CSDN.1
- 绘制各种图形
- 理解Tomcat
- 最新面试题
- JavaWeb
- 常用加解密算法总结1-DES、TDES、3DES