poj2116 模拟题
不知道错在哪里
/*
给定两个斐波那契表示数,要求用标准化表达方式表达
然后将这两个数加起来,和也用标准化方式表达
思路:显然要将这两个数先用十进制表示,和也用十进制表示
然后在转化成二进制即可
1 1 2 3 5 8 13 21 34
用贪心法能保证1不连续
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#define ll long long
using namespace std;
ll f[],a,b,c;
char buf[],s1[],s2[];
void init(){
f[]=;f[]=;
for(int i=;i<=;i++)
f[i]=f[i-]+f[i-];
} int ans1[],ans2[],ans3[],len1,len2,len3;
void solve(ll a,int *ans){//把a分解成斐波那契数列
for(int i=;i>=;i--){
if(a==) ans[-i]=;
else if(a>=f[i]){
ans[-i]=;
a-=f[i];
}
else ans[-i]=;
}
} int main(){
init();
while(scanf("%s %s",s1,s2)==){
memset(ans1,,sizeof ans1);
memset(ans2,,sizeof ans2);
memset(ans3,,sizeof ans3);
a=b=c=;
int Len1=strlen(s1);
int Len2=strlen(s2); for(int i=;i<Len1;i++)
a+=(s1[i]-'')*f[Len1-i];
for(int i=;i<Len2;i++)
b+=(s2[i]-'')*f[Len2-i]; c=a+b;
solve(a,ans1);
solve(b,ans2);
solve(c,ans3); /*for(int i=0;i<=39;i++)cout<<ans1[i];
puts("");
for(int i=0;i<=39;i++)cout<<ans2[i];
puts("");
for(int i=0;i<=39;i++)cout<<ans3[i];
puts("");*/ len1=len2=len3=;
while(ans1[len1]==)
len1++;
while(ans2[len2]==)
len2++;
while(ans3[len3]==)
len3++;
printf(" ");
for(int i=len3;i<len1;i++)
printf(" ");
for(int i=len1;i<=;i++)
printf("%d",ans1[i]);
puts(""); printf("+ ");
for(int i=len3;i<len2;i++)
printf(" ");
for(int i=len2;i<=;i++)
printf("%d",ans2[i]);
puts(""); printf(" ");
for(int i=len3;i<=;i++)
printf("-");
puts(""); printf(" ");
for(int i=len3;i<=;i++)
printf("%d",ans3[i]); puts("");
puts("");
}
return ;
}
poj2116 模拟题的更多相关文章
- poj 1008:Maya Calendar(模拟题,玛雅日历转换)
Maya Calendar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 64795 Accepted: 19978 D ...
- poj 1888 Crossword Answers 模拟题
Crossword Answers Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 869 Accepted: 405 D ...
- CodeForces - 427B (模拟题)
Prison Transfer Time Limit: 1000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u Sub ...
- sdut 2162:The Android University ACM Team Selection Contest(第二届山东省省赛原题,模拟题)
The Android University ACM Team Selection Contest Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里 ...
- 全国信息学奥林匹克联赛 ( NOIP2014) 复赛 模拟题 Day1 长乐一中
题目名称 正确答案 序列问题 长途旅行 英文名称 answer sequence travel 输入文件名 answer.in sequence.in travel.in 输出文件名 answer. ...
- UVALive 4222 Dance 模拟题
Dance 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&pag ...
- cdoj 25 点球大战(penalty) 模拟题
点球大战(penalty) Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/2 ...
- Educational Codeforces Round 2 A. Extract Numbers 模拟题
A. Extract Numbers Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/600/pr ...
- URAL 2046 A - The First Day at School 模拟题
A - The First Day at SchoolTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudg ...
随机推荐
- mybatis批量更新报错
批量更新sql <update id="updateAutoAppraiseInfo" parameterType="Object"> <fo ...
- 在已有的Java项目中使用Kotlin
需要配置两个地方首先在项目点gradle文件中引入Kotlin插件 然后在module的build.gradle文件中应用插件
- JAVA9大隐式对象
- sublime text 3 左侧目录树中文文件夹显示方框问题解决
0 - 解决方法 打开Preferences->Settings 在弹出的Settings对话框中,加入"dpi_scale": 1.0 重新启动sublime text 3 ...
- MySql cmd下的学习笔记 —— 有关建立数据库的操作(连接Mysql,建立数据库,删除数据库等等)
(01) 连接数据库 mysql -uroot -p 之后输入密码 ******.(由于我的密码设置的是111,所以输入的是111) (02) 退出数据库 exit (03) 查看数据库 show d ...
- ubuntu安装和分区方案
方案引用 Swap(相当于电脑内存):逻辑分区.大小设置为电脑内存大小,2G,4G: /boot(引导分区):主分区:大小设置为480M: /home(用户存储数据用):逻辑分区,要尽可能大,100G ...
- 2017-2018-2 20165237 实验四《Android开发基础》实验报告
2017-2018-2 20165237 实验四<Android开发基础>实验报告 实验报告表头: No.1 实验要求: Android程序设计-1 实验要求: 参考<Java和An ...
- mysql定时任务用到存储过程和定时任务
需求: 需要将t_app_message中的消息(将要被发送的消息)给每一个学生发送一遍,并且在发送完成后,将消息置为已发送状态已发送状态. 一言不合上代码 /*删除存储过程*/ drop proce ...
- com.nostra13.universalimageloader 加载displayImage图片时图片模糊的处理办法
配置显示参数: DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(defaultR ...
- Python学习笔记-转义字符
Python转义字符同C语言的转义字符