ACM学习历程——HDU4814 Golden Radio Base(数学递推) (12年成都区域赛)
Description
Any non-negative real number can be represented as a base-φ numeral using only the digits 0 and 1, and avoiding the digit sequence "11" � this is called a standard form. A base-φ numeral that includes the digit sequence "11" can always be rewritten in standard form, using the algebraic properties of the base φ ― most notably that φ + 1 = φ 2 . For instance, 11(φ) = 100(φ). Despite using an irrational number base, when using standard form, all on-negative integers have a unique representation as a terminating (finite) base-φ expansion. The set of numbers which possess a finite base-φ representation is the ring Z[1 + √5/2]; it plays the same role in this numeral systems as dyadic rationals play in binary numbers, providing a possibility to multiply.
Other numbers have standard representations in base-φ, with rational numbers having recurring representations. These representations are unique, except that numbers (mentioned above) with a terminating expansion also have a non-terminating expansion, as they do in base-10; for example, 1=0.99999….
Coach MMM, an Computer Science Professor who is also addicted to Mathematics, is extremely interested in GRB and now ask you for help to write a converter which, given an integer N in base-10, outputs its corresponding form in base-φ.
Input
Output
Sample Input
2
3
6
10
Sample Output
10.01
100.01
1010.0001
10100.0101
Hint

- #include <iostream>
- #include <cstdio>
- #include <cstdlib>
- #include <cstring>
- #include <cmath>
- #include <algorithm>
- #include <set>
- #include <map>
- #include <vector>
- #include <queue>
- #include <string>
- #define inf 0x3fffffff
- #define esp 1e-10
- #define N 100
- using namespace std;
- int z[N], x[N], lenz, lenx;
- bool judge ()
- {
- if(z[0] && x[0])
- return 0;
- for (int i = 0; i < lenx; ++i)
- if (x[i] > 1 || (x[i] && x[i+1]))
- return 0;
- for (int i = 0; i < lenz; ++i)
- if (z[i] > 1 ||(z[i] ==1 && z[i+1] == 1))
- return 0;
- return 1;
- }
- void doz (int i)
- {
- if (i == lenz-1)
- lenz++;
- int up = z[i] / 2;
- z[i] = z[i] & 1;
- z[i+1] += up;
- if (i >= 2)
- z[i-2] += up;
- else
- {
- if (lenx < 3 - i)
- lenx = 3 - i;
- x[1-i] += up;
- }
- }
- void dox (int i)
- {
- if (i+3 > lenx)
- lenx = i + 3;
- int up = x[i] / 2;
- x[i] = x[i] & 1;
- x[i+2] += up;
- if (i == 0)
- z[0] += up;
- else
- x[i-1] += up;
- }
- void qt (int n)
- {
- memset (z, 0, sizeof(z));
- memset (x, 0, sizeof(x));
- lenz = 1;
- lenx = 0;
- z[0] = n;
- while (!judge ())
- {
- for (int i = lenx-1; i >= 0; --i)
- {
- if (i == 0 && x[i] > 0 && x[i+1] > 0)
- {
- int up = min (x[i], x[i+1]);
- z[0] += up;
- x[0] -= up;
- x[1] -= up;
- continue;
- }
- else if (x[i] > 0 && x[i+1] > 0)
- {
- int up = min (x[i], x[i+1]);
- x[i-1] += up;
- x[i+1] -= up;
- x[i] -= up;
- continue;
- }
- if (x[i] > 1)
- {
- dox (i);
- continue;
- }
- }
- while(x[lenx-1] == 0)
- lenx--;
- for (int i = 0; i < lenz; ++i)
- {
- if (i == 0 && z[i] > 0 && x[0] > 0)
- {
- if (i == lenz-1)
- lenz++;
- int up = min (z[i], x[0]);
- z[1] += up;
- z[0] -= up;
- x[0] -= up;
- continue;
- }
- else if (z[i] > 0 && z[i+1] > 0)
- {
- if (i+3 > lenz)
- lenz = i + 3;
- int up = min (z[i], z[i+1]);
- z[i+2] += up;
- z[i+1] -= up;
- z[i] -= up;
- continue;
- }
- if (z[i] > 1)
- {
- doz(i);
- continue;
- }
- }
- }
- while(x[lenx-1] == 0)
- lenx--;
- }
- int main()
- {
- //freopen ("test.txt", "r", stdin);
- int n;
- while (scanf ("%d", &n) != EOF)
- {
- qt (n);
- for (int i = lenz - 1; i >= 0; --i)
- printf ("%d", z[i]);
- if (lenx > 0)
- printf (".");
- for (int i = 0; i < lenx; ++i)
- printf ("%d", x[i]);
- printf ("\n");
- }
- return 0;
- }
ACM学习历程——HDU4814 Golden Radio Base(数学递推) (12年成都区域赛)的更多相关文章
- ACM学习历程—HDU 5459 Jesus Is Here(递推)(2015沈阳网赛1010题)
Sample Input 9 5 6 7 8 113 1205 199312 199401 201314 Sample Output Case #1: 5 Case #2: 16 Case #3: 8 ...
- ACM学习历程—HDU1023 Train Problem II(递推 && 大数)
Description As we all know the Train Problem I, the boss of the Ignatius Train Station want to know ...
- ACM学习历程—ZOJ 3777 Problem Arrangement(递推 && 状压)
Description The 11th Zhejiang Provincial Collegiate Programming Contest is coming! As a problem sett ...
- ACM学习历程—HDU 5326 Work(树形递推)
Problem Description It’s an interesting experience to move from ICPC to work, end my college life an ...
- AndyQsmart ACM学习历程——ZOJ3872 Beauty of Array(递推)
Description Edward has an array A with N integers. He defines the beauty of an array as the summatio ...
- ACM学习历程—HDU 5512 Pagodas(数学)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5512 学习菊苣的博客,只粘链接,不粘题目描述了. 题目大意就是给了初始的集合{a, b},然后取集合里 ...
- ACM学习历程—SNNUOJ1213 加油站问题(动态规划 || 数学)
题目链接:http://219.244.176.199/JudgeOnline/problem.php?id=1213 这是这次微软实习面试的一道题,当时只相出了一个2n的做法,面试官让我优化成n的做 ...
- ACM学习历程—HDU 5073 Galaxy(数学)
Description Good news for us: to release the financial pressure, the government started selling gala ...
- ACM学习历程—FZU2191完美的数字(数学)
Description Bob是个很喜欢数字的孩子,现在他正在研究一个与数字相关的题目,我们知道一个数字的完美度是 把这个数字分解成三个整数相乘A*A*B(0<A<=B)的方法数,例如数字 ...
随机推荐
- gulp 静态资源版本控制
package.json { "name": "gulp", "version": "0.0.1", "des ...
- 华为云测平台服务再升级!华为M5系列平板调测能力正式上线!
6月1日,华为M5系列平板设备兼容性测试和远程真机调试功能在华为终端开放实验室正式上线!助力您的产品在大屏适配上快人一步! 华为终端开放实验室DevEco平台现已提供基于华为M5系列平板设备的兼 ...
- SQLServer -- 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'T_FLOW'中的标识列指定显式值。
SET IDENTITY_INSERT TABLE_NAME ON; INSERT INTO TABLE_NAME(XXX, XXX,..., XXX) SELECT XXX, XXX,..., XX ...
- css 字体的unicode码
微软雅黑: YaHei宋体: SimSun黑体: SimHei ;
- HTML 学习笔记 JQuery(DOM 操作3)
设置和获取HTML 文本 和 值 1.html()方法 类似于JavaScript中的innerHTML属性,可以用来读取或者设置某个元素中的HTML内容 例子 <html> <he ...
- php总结1 ——php简介、工作原理、运行环境、文件构成、语法结构、注释
1.1 PHP 超文本预处理程序.实际就是制作网站的脚本程序 1.2 运行环境: wamp——windowns+apache+mySQL+php 常用于开发.学习和研究 lamp ——linu ...
- python数据分析之:绘图和可视化
在数据分析领域,最出名的绘图工具就是matlib.在Python同样有类似的功能.就是matplotlib.前面几章我们都在介绍数据的生成,整理,存储.那么这一章将介绍如果图形化的呈现这些数据.来看下 ...
- web前端开发-Ajax(1)
1.简单简绍Ajax的功能 Ajax是处于前端和后端之间的这么一个东西,他可以拿到你前端form的内容,并且在你触发Ajax的时候,先将某些数据发送到服务器端,等接受到服务器 返回的数据时,执行某个函 ...
- Java for LeetCode 127 Word Ladder
Given two words (beginWord and endWord), and a dictionary, find the length of shortest transformatio ...
- Gemini.Workflow 双子工作流入门教程三:定义流程:流程节点、迁移条件参数配置
简介: Gemini.Workflow 双子工作流,是一套功能强大,使用简单的工作流,简称双子流,目前配套集成在Aries框架中. 下面介绍本篇教程:定义流程:流程节点.迁移条件参数配置. 一.普通节 ...