Death to Binary? POJ - 2116(模拟+贪心)

Android15音频进阶之4种调试线程死锁利器(八十九) 本篇目的:Android15音频进阶之4种调试线程死锁利器对于开发者来说,最令人头疼的,莫过于多线程交互出问题的时候,我们应该从哪里找突破口呢?下面来介绍一下调试Android音频中线程死锁的四种方案线程死锁是并发编程中常见的问题之一,它指的是在多个线程竞争资源的过程中,由于相互等待对方持有的资源而无法继续执行,从而导致所有线程都无法向前推进的现象。死锁不仅会导致系统性能严重下降,甚至可能导致整个系统崩溃。线程死锁的产生有四个必要条件:互斥条件:资源不能被多个线程共同使用,只能由一个线程独占。 阅读详情

Death to Binary? POJ - 2116

The group of Absurd Calculation Maniacs has discovered a great new way how to count. Instead of using the ordinary decadic numbers, they use Fibonacci base numbers. Numbers in this base are expressed as sequences of zeros and ones similarly to the binary numbers, but the weights of bits (fits?) in the representation are not powers of two, but the elements of the Fibonacci progression (1, 2, 3, 5, 8,... - the progression is defined by F0 = 1, F1 = 2 and the recursive relation F n = F n-1 + F n-2 for n >= 2).

For example 1101001 Fib = F0 + F3 + F5 + F6 = 1 + 5 + 13 + 21 = 40.

You may observe that every integer can be expressed in this base, but not necessarily in a unique way - for example 40 can be also expressed as 10001001 Fib. However, for any integer there is a unique representation that does not contain two adjacent digits 1 - we call this representation canonical. For example 10001001 Fib is a canonical Fibonacci representation of 40.

To prove that this representation of numbers is superior to the others, ACM have decided to create a computer that will compute in Fibonacci base. Your task is to create a program that takes two numbers in Fibonacci base (not necessarily in the canonical representation) and adds them together.

Input
The input consists of several instances, each of them consisting of a single line. Each line of the input contains two numbers X and Y in Fibonacci base separated by a single space. Each of the numbers has at most 40 digits. The end of input is not marked in any special way.
Output
The output for each instance should be formated as follows:

The first line contains the number X in the canonical representation, possibly padded from left by spaces. The second line starts with a plus sign followed by the number Y in the canonical representation, possibly padded from left by spaces. The third line starts by two spaces followed by a string of minus signs of the same length as the result of the addition. The fourth line starts by two spaces immediately followed by the canonical representation of X + Y. Both X and Y are padded from left by spaces so that the least significant digits of X, Y and X + Y are in the same column of the output. The output for each instance is followed by an empty line.

Sample Input

11101 1101
1 1

Sample Output

   100101
+   10001
  -------
  1001000

   1
+  1
  --
  10

题意:

以二进制的形式给出一串数列(例:11101),要求按照斐波那契数列的规律化为10进制,斐波那契数列1,2,3,5,8,13,21···,其标号分别为F0,F1,F2,F3···,化为十进制:1*1+2*0+3*1+5*1+8*1=17.数列11101的标准形式为:100101(中间不能有连续两个或两个以上的1出现即为标准形式,对每个十进制数字, 标准形式有且只有一种)。
要求输入两串数列,用空格隔开。输出两串数列的标准形式以及两串数列的相加结果,结果也要用标准形式表示。

分析:

∵F[n]=F[n−1]+F[n−2]∵F[n]=F[n−1]+F[n−2]
∴∴我们知道如果存在了相邻到11,那么这两个连续到11一定可以用一个1表示(高一位)
∴∴都可以写成不连续的1的形式

我们采用贪心的方式解决,方法如下:
1. 将所给数字转化成十进制数,然后求出和
2. 将十进制数转化成fib形式

将十进制转化成fib形式方法如下:
1. if  num>=fib[i]→num−fib[i]→if  num>=fib[i]→num−fib[i]→该位为1
2. else ifelse if 字符串不是空 →→ 该位为0

仅仅这两步大家可能会有疑问,这样循环过程中
如果连续两次循环执行时,会不会连续两次都是num >= fib[i],这样字符串就有连续的1了?

下面说明这种情况不会出现:
F[n]=F[n−1]+F[n−2]F[n]=F[n−1]+F[n−2]
1—— 2 —— 3—— 5—— 8 —— 13—— 21
一、if num>fib[i]if num>fib[i],但是一定小于fib[i+1]fib[i+1]

即fib[i]<num<fib[i+1]fib[i]<num<fib[i+1]

∵fib[i−1]+fib[i]=fib[i+1]∵fib[i−1]+fib[i]=fib[i+1]

∵fib[i]<num<fib[i+1]∵fib[i]<num<fib[i+1]

∴num−fib[i]<fib[i−1]∴num−fib[i]<fib[i−1]

这就证明了,减去当前fib数后,一定也小于前一个fib数,这就保证了不会出现连续的1。
二、如果直接等于fib那就更好说了,就当前位为1就结束了

这道题运用到算法简单,但是需要对菲波那契数列有深刻理解才行
code:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>
using namespace std;
typedef long long ll;
const int MAXN = 55;
int n;
ll fib[MAXN];
string A,B;
void init(){
    fib[0] = 1;
    fib[1] = 2;
    for(int i = 2; i < MAXN; i++){
        fib[i] = fib[i-1] + fib[i-2];
    }
}
ll toDec(string s){
    ll ans = 0;
    int len = s.length();
    for(int i = 0; i < len; i++){
        int val = s[len-i-1] - '0';
        if(val)
            ans += fib[i];
    }
    return ans;
}
string toFib(ll num){
    string ans = "";
    for(int i = 40; i >= 0; i--){
        if(num >= fib[i]){
            num -= fib[i];
            ans += '1';
        }
        else if(ans != "")
            ans += '0';
    }
    if(ans == "") ans = "0";
    return ans;
}
int main(){
    init();
    while(cin >> A >> B){
        ll a,b,c;
        a = toDec(A);
        b = toDec(B);
        c = a + b;
        //cout << a << b << c << endl;
        string fa,fb,fc;
        fa = toFib(a);
        fb = toFib(b);
        fc = toFib(c);
        //cout << fa << fb << fc << endl;
        int lena = fa.length();
        int lenb = fb.length();
        int lenc = fc.length();
        cout << "  ";
        for(int i = 0; i < lenc-lena; i++){
            cout << " ";
        }
        cout << fa << endl;
        cout << "+ ";
        for(int i = 0; i < lenc-lenb; i++){
            cout << " ";
        }
        cout << fb << endl;
        cout << "  ";
        for(int i = 0; i < lenc; i++){
            cout << "-";
        }
        cout << endl;
        cout << "  " << fc << endl;
        cout << endl;
    }
    return 0;
}
YOLOv11改进 | Neck篇 | 独创HFPN利用分层特征融合块HFFB模块融合多层次特征改进yolov11(全网独家创新) 本文给大家带来的最新改进是利用分层特征融合块HFFB创新yolov11的neck部分我称之为HFPN,这个模块可以融合局部特征、全局特征、中间特征将三种特征融合在一起辅助yolov11进行检测,经过我的设计分为三种可以针对大目标、小目标、标准目标的检测方式均不同,大家可以根据自己的数据集进行不同的选择,本文的内容为我独家创新。YOLOv11改进系列专栏——本专栏持续复习各种顶会内容——科研必备目录一、本文介绍二、原理介绍三、核心代码四、添加方法4.1 修改一4.2 修改二4.3 修改三4.4 修改四。 阅读详情

相关推荐

Labview执行adbshell操作

一、目录 1、实现思路 2、adbshell工具配置 3、Labview执行命令窗口 1、实现思路 使用Labview的优点: 1、可以配合电源系统或者调用其他接口工具实现更高程度的自动化测试; 2、直接执行Linux相关命令,编写相关执行顺序或者逻辑更简易; --------可以用adbpush命令将.sh的脚本文件推入控制器内部执行; 3、Ubuntu系统比较大,如果只是日常执行脚本测试还是比较占用磁盘空间; 2、adbshell工具配置 1)下载adbshell工具; adbshell工具下载链

zataji的博客 2052

第一题:斐波那契数列

import java.util.Scanner; public class Fibonacci { public static int Fibonacci(int m) { //定义一个长度为40的数组 int[] arr = new int[40]; int s = 0; //先求出0,1的值,因为f(n)=f(n-1)+f(n-2),n必须>=2才合理 ar.

sunianjinshi666的博客 465

保姆级教程:用xmir-patcher一键解锁Redmi AX3000路由器的SSH(附视频演示)

本文提供Redmi AX3000路由器SSH解锁的保姆级教程,详细介绍了使用xmir-patcher工具一键解锁SSH的步骤,包括环境搭建、工具获取、图形化操作详解及常见问题排查。解锁后,用户可通过SSH连接实现刷机、插件安装、网络优化等高级功能,提升路由器性能。

weixin_29216049的博客 726

Fibonacci base

而且,对于每个正整数,存在若干个不同的集合,每个集合由 Fibonacci 数列中的数字组成,集合中的数字的和等于该正整数。例如:13 可以表示为集合 {13},{5, 8} 或 {2, 3, 8} 中数字的和,17 可以表示为集合 {1, 3, 13} 或 {1, 3, 5, 8} 中的数字的和。例如,数列中的第 2 个数字是 1(1=1+0),第 3 个数字是 2(2=1+1),第 4 个数字是 3(3=2+1),依此类推。给出一个正整数的集合,请您将这些数表示成 Fibonacci 二进制数。

m0_74282945的博客 631

【C++/嵌入式梳理】bootloader

【C++/嵌入式笔试面试八股】bootloader

Hi 1208

NVIDIA Isaac GR00T N1 入门教程(一) 人形机器人多模态大语言模型

英伟达™ Isaac GR00T N1 是世界上首个用于通用仿人机器人推理和技能的开放式基础模型。该跨体模型采用多模态输入(包括语言和图像)在不同环境中执行操作任务。GR00T N1 在一个庞大的仿人机器人数据集上进行训练,该数据集包括真实捕获数据、使用英伟达 Isaac GR00T Blueprint 组件生成的合成数据(神经生成轨迹示例)以及互联网规模的视频数据。通过后期训练,它可以适应特定的应用、任务和环境。

2506_90492529的博客 3049

Fibonacci 第 n 项 c++

题意:求Fibonacci数列的第n项,并对结果取模,即求 其中 这里由于n的值很大,故我们不能使用递推的方法求得第n项,于是我们考虑更快的矩阵快速幂 设表示一个的矩阵,我们希望依据推出。 尝试推倒一个base矩阵,使,即 于是我们便可以推倒出这样一个式子: 定义那么则有这个矩阵的第一行第一列元素,也就是的第一行第一列元素。 另外,当的时候可以直接输出1,不需要执行矩阵快速幂。 AC代码如下: #include<bits/stdc++.h> #de...

m0_51028279的博客 1037

RK3568平台开发系列:Android环境下CAN的使用

在RK3568平台上,我们可以利用Android环境中的API来实现CAN的使用。通过以上步骤,我们可以在Android应用中发送和接收CAN数据,并进行相应的处理。当接收到CAN数据时,将触发onMessageReceived回调方法,我们可以在这个方法中对接收到的数据进行处理。在上述代码中,我们指定了CAN的ID为0x123,数据为{0x01, 0x02, 0x03},并设置了标志位和周期。接收CAN数据需要注册一个监听器,并在监听器中处理接收到的数据。发送CAN数据需要指定CAN的ID和数据。

2301_79330513的博客 1912

poj2116——模拟

题目链接:http://poj.org/problem?id=2116 The group of Absurd Calculation Maniacs has discovered a great new way how to count. Instead of using the ordinary decadic numbers, they use Fibonacci base numbers...

mumei的博客 391

2022年华为ICT大赛 全球总决赛!中文综合任务书-网络赛道真题!

2022年华为ICT大赛 全球总决赛!综合任务书-网络赛道真题-中文翻译版

君逍遥o 2402

AI漫剧全套万能提示词合集

今天给大家整理一套已经跑通爆款漫剧的万能提示词库!覆盖:豆包剧本人设词 + 分镜生成词 + 即梦绘图词 + 动态优化词 + 防翻车固定词直接复制粘贴,新手也能做出稳定、高清、统一、有质感的AI漫剧!你是资深短视频漫剧编剧,擅长制作60秒竖屏爆款AI漫剧,请为我创作一集完整漫剧内容。要求:开头3秒高能抓眼,中段有冲突转折,结尾留强悬念钩子,节奏紧凑、适合短视频流量。首先生成固定统一人物人设:包含脸型、五官、发色、发型、穿搭、身材、气质、画风、光影细节,要求足够精细,保证全程角色不变脸。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 1866

Fibonacci求解第n项(矩阵法)

1、递归法,时间复杂度:O(n*n);2、普通循环算法:时间复杂度:O(n);3、矩阵法:时间复杂度:O(logn);前2个方法,都比较简单,刷题时候用过了,但是这次刷题,属于Fibonacci加强版,对时间性能很有要求,使用1或者2方法一直ac不了,所以看了矩阵求解方法。这个方法看了一个下午才明白,所以一定要记录的。3.1、先看一下矩阵法的推导过程,也就是如何把一个Fibonacci求解转为对矩...

iCoding91 1665

10、基于单倍型多样性隐马尔可夫模型的基因型错误检测

本文提出了一种基于单倍型多样性隐马尔可夫模型(HMM)的基因型错误检测方法,旨在提升三人组基因型数据中错误识别的准确性。通过利用群体水平的连锁信息,该方法克服了传统方法在小系谱数据中表现不佳的局限性。文章详细介绍了模型结构、三种替代似然函数及其计算方法,并通过模拟数据集和真实数据集验证了方法的有效性。实验结果显示,该方法在灵敏度、特异度和准确率方面均表现出色,为基因数据质量控制提供了新的解决方案。

moon9的博客 95

Death to Binary? 模拟+斐波那契进制数标准式

题意:用斐波那契数来计数,一个字符串s,字符串中只有0或1,f[i]代表第i个斐波那契数 0代表0*f[i],1代表1*f[i],从字符串最右边开始,第i个字符代表f[i], 例如1010=0*f[0]+1*f[1]+0*f[2]+1*f[3]=0+2+0+5=7; 标准字符串:字符串中任意两个1不相邻 难点:将所给字符串转化成标准字符串 思路:因为任一斐波那契数都是前两个相加,因此从小

Big_Rui的博客 1022

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Death to Binary? POJ - 2116 (A+B,模拟,训练比赛化)

传送门 题意:多组输入,每组输入两个01串表示的数a,b。要求表示a+b=c。 a,b之多40位 Fibonacci进制:。从低位到高位,权值分别为1,2,3,5,8,13,,,,,, 题解:就是个模拟a+b。这种模拟题要注意,一半很容易出先小错误。 特别注意:a,b可能等于"0"。 收获:训练比赛化——做题的时候不用太考虑每一步骤是怎么出来的,AC算完事儿。之后再来总结。 代码: #include <cstdio> #include <cstrin...

I_have_a_world的博客 138

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Death to Binary?

该题主要是。将求出的结果(N)换算为没有连续1的串,从高位到低位寻找,找到第一个小于等于N的位置即为最后字符的长度,继续向前遍历组成N,位置赋值为 1 ,就将该数(Fn(i))从N中减去,直至遍历完成。(注意:如果i小于零,说明该数为 0 ) #include #include #include using namespace std; typedef long long ll; ll fn[

立交桥的博客 332

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Death to Binary? (模拟)题解

思路:除去前导0,注意两个1不能相邻(11-&gt;100),注意 0 *** 或者*** 0或者0 0情况用string的reverse()很舒服代码:#include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;cstdlib&gt; #include&lt;cctype&gt; #include&lt;queue&gt; #includ...

努力,奋斗 267

POJ2116题解(1.低阶:贪心 2.高阶:利用斐波那契的规律)

1.题目分析: 我这里介绍一种最简单的方法:就是将字符串转换成整数并将整数转换成字符串。将整数转换为字符串的时候有一个技巧就是从大往小去减权重,这样可以避免连续的1。这里说一下为什么: 为了避免前导零的情况,我们需要一直找权值小于等于整数的,找到一个就减去,那么无可非议它前面的那个权值是大于整数的,这个权值小于等于整数,说明下一个权值一定是大于整数减去当前的权重,所以一定不会出现连续1的情况。附上代码! #include<iostream> #include<algorithm> #

stn54999的博客 244

UVa 948 - Fibonaccimal Base

题目:给你一个数字表示成fi 分析: 说明:

小白菜又菜 2813

POJ 2116解题报告

Death to Binary? Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1494   Accepted: 461 Description The group of Absurd Calculation Maniacs has discovered a

jhljx的专栏 1064

poj 2116 Death to Binary

传送门:点击打开链接DescriptionThe group of Absurd Calculation Maniacs has discovered a great new way how to count. Instead of using the ordinary decadic numbers, they use Fibonacci base numbers. Numbers in thi...

Xavier's blog 522

POJ 2116 Death to Binary? (斐波那契+模拟)

题意:给出两个01串,每个位的权重是斐波那契值,要求相加后的结果,并将它们都转化为不存在连续1的字符串。 题解:斐波那契+模拟 预处理斐波那契数列,然后将原串转化为十进制numnumnum。接下来考虑如何转化。 已知原串位数不超过40位,可以知道上限为f[41]f[41]f[41],从上限往下遍历,若numnumnum≥f[i]f[i]f[i],减去即可,这样就不会出现连续1,推一推就知道了。 #define _CRT_SECURE_NO_WARNINGS #include<iostream>

gongyuandaye的博客 289

POJ - 2116 Death to Binary?

The group of Absurd Calculation Maniacs has discovered a great new way how to count. Instead of using the ordinary decadic numbers, they use Fibonacci base numbers. Numbers in this base are expressed ...

>*,< 321

Death to Binary? POJ - 2116

原oj点击打开链接vj点击打开链接 这个题 说实话 我wa 了很多发  wa到怀疑人生 好不容易看别人的代码  不wa了 结果 给我出来一个 Presentation Error(格式错误)    搞得我头皮 发麻  主要了解一下的就是 前面需要 的空格 以及 每行需要 最后答案的 长度 这个就可以了 具体的题意 谷歌一下就行 感觉这道题 有点逗 ~~~~#include&lt;stdio.h&g...

qq_41071646的博客 330

Death to Binary? POJ - 2116(模拟 斐波那契数列)

题目地址:http://poj.org/problem?id=2116 思路:输入两个斐波那契数列基数制的数,转换成十进制,相加,再把这三个十进制数转换成规范性的斐波那契数列基数制的数。 注意输入的斐波那契数列基数制的数可能有零。 在转换成规范性的斐波那契数列基数制的数时,直接将十进制数化成尽可能大的斐波那契数列基数位即可。当斐波那契数列基数的第n位是1,第n-1位不可能也是1,因为 Fn = F...

呼吸 246

POJ 2116

题意:以二进制的形式给出一串数列(例:11101),要求按照斐波那契数列的规律化为10进制,斐波那契数列1,2,3,5,8,13,21···,其标号分别为F0,F1,F2,F3···,化为十进制:1*1+2*0+3*1+5*1+8*1=17.数列11101的标准形式为:100101(中间不能有连续两个或两个以上的1出现即为标准形式,对每个十进制数字, 标准形式有且只有一种)。 要求输入两串数列,

dawayangzen的专栏 1254
上一篇: C Looooops POJ - 2115(扩展欧几里徳)
下一篇: Minimum Ternary String(思维)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值