UVA 4855 Hyper Box
You live in the universe X where all the
physical laws and constants are different
from ours. For example all of their objects
are N-dimensional. The living beings
of the universe X want to build an
N-dimensional monument. We can consider
this N dimensional monument as an
N-dimensional hyper-box, which can be
divided into some N dimensional hypercells.
The length of each of the sides of
a hyper-cell is one. They will use some
N-dimensional bricks (or hyper-bricks) to
build this monument. But the length of
each of the N sides of a brick cannot be
anything other than fibonacci numbers. A
fibonacci sequence is given below:
1, 2, 3, 5, 8, 13, 21, . . .
As you can see each value starting from 3 is the sum of previous 2 values. So for N = 3 they can
use bricks of sizes (2,5,3), (5,2,2) etc. but they cannot use bricks of size (1,2,4) because the length 4
is not a fibonacci number. Now given the length of each of the dimension of the monument determine
the minimum number of hyper-bricks required to build the monument. No two hyper-bricks should
intersect with each other or should not go out of the hyper-box region of the monument. Also none of
the hyper-cells of the monument should be empty.
Input
First line of the input file is an integer T (1 ≤ T ≤ 100) which denotes the number of test cases. Each
test case starts with a line containing N (1 ≤ N ≤ 15) that denotes the dimension of the monument
and the bricks. Next line contains N integers the length in each dimension. Each of these integers will
be between 1 and 2000000000 inclusive.
Output
For each test case output contains a line in the format Case x: M where x is the case number (starting
from 1) and M is the minimum number of hyper-bricks required to build the monument.
Sample Input
2
2
4 4
3
5 7 8
Sample Output
Case 1: 4
Case 2: 2
题意: 给一个n维空间的的物体,给出每一维的长度。问有最少几个比它体积小的物体组成它,要求这些物体的边必须是斐波那契数列
里边的数。
思路: 假设边长是斐波那契数就无论他,假设不是,比这个边长小的最大的斐波数减起,一直减到0。减了几个斐波数。也就是这条边
最少分解成几个斐波数,最后每一维相乘即为结果。
#include<stdio.h>
#include<string.h>
int fb[60];
int main(){
int t,ok,n,cas=1;
int a[20];
fb[1]=1; fb[2]=2;
for(int i=3;i<55;i++)
fb[i]=fb[i-1]+fb[i-2];
scanf("%d",&t);
while(t--){
int cnt=0;
long long sum=1;//结果不用long long 会错
scanf("%d",&n);
for(int i=0;i<n;++i)
scanf("%d",&a[i]);
for(int i=0;i<n;++i){
cnt=ok=0; int k;
for(int j=1;j<55;j++){
if(a[i]==fb[j]){
ok=2;
break;
}
if(a[i]<fb[j]){
ok=1;
k=j;
break;
}
}
if(ok==1){
int x=a[i];
while(x){
while(fb[k]>x)
k--;
x-=fb[k];
cnt++;
}
}
if(ok!=2)//ok==2时证明这条边是斐波数
sum*=cnt;//注意是相乘。,
}
printf("Case %d: %lld\n",cas++,sum);
}
return 0;
}
UVA 4855 Hyper Box的更多相关文章
- UVA 11488 Hyper Prefix Sets (Trie)
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- UVA 11488 Hyper Prefix Sets (字典树)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- uva 11488 - Hyper Prefix Sets(字典树)
H Hyper Prefix Sets Prefix goodness of a set string is length of longest common prefix*number of str ...
- UVA 11488 Hyper Prefix Sets (字典树)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- uva 11488 Hyper Prefix Sets(狂水)
题意: 获得集合中最长前缀长度*有该前缀个数的最大值 Prefix goodness of a set string is length of longest common prefix*number ...
- UVa 11488 - Hyper Prefix Sets
找 前缀长度*符合该前缀的字符串数 的最大值 顺便练了一下字典树的模板 #include <iostream> #include <cstdio> #include <c ...
- UVA - 11488 Hyper Prefix Sets(trie树)
1.给n个只含0.1的串,求出这些串中前缀的最大和. 例1: 0000 0001 10101 010 结果:6(第1.2串共有000,3+3=6) 例2: 01010010101010101010 1 ...
- 【习题 3-10 UVA - 1587】Box
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 枚举某个顶角的三个相邻面就好. 看看这三个相邻面有没有对应的面. 以及3个相邻面的6个边. 能否分成2个a,2个b,2个c 也即每个 ...
- Mango Weekly Training Round #3 解题报告
A. Codeforces 92A Chips 签到题.. #include <iostream> #include <cstdio> #include <cstring ...
随机推荐
- 每日算法——新型在线LCA
在线LCA一般大家都会用倍增吧,时间复杂度O(nlogn),空间复杂度O(nlogn),都是非常严格的复杂度限制,并且各种边界处理比较麻烦,有没有更快更好的办法呢? 我们发现,在树链剖分时,我们不经意 ...
- Oracle 当输入参数允许为空时
场景: 有一个存储过程p_test 带有多个输入参数code.name.number p_test(code IN VARCHAR2,nameIN VARCHAR2,number IN VARCHAR ...
- 【java基础】(2)Java父类与子类的 内存引用讲解
从对象的内存角度来理解试试.假设现在有一个父类Father,它里面的变量需要占用1M内存.有一个它的子类Son,它里面的变量需要占用0.5M内存.现在通过代码来看看内存的分配情况:Father f = ...
- MySQL笔试题搜罗
一.有表如下 +------+---------+--------+ | name | subject | score | +------+---------+--------+ | 张三 | 数学 ...
- phpmyadmin搭建
phpadmin配置: 一.phpadmin安装及配置 1.解压phpadmin压缩包,并复制到 /usr/local/apache2/htdocs目录,重命名为dataManage 2.进入data ...
- 装X数学:高雅的数学表示
采用高雅的数学描述 转自于:研究生之路怎么走? 高雅的数学描述会提高你论文的等级和加强评审人对你基础功底的认可.例如泛函分析.集合.测度.度量空间和拓扑空间.现代代数.微分几何等数学方面的 ...
- (转)Arcgis for Js之鼠标经过显示对象名的实现
http://blog.csdn.net/gisshixisheng/article/details/41889345 在浏览地图时,移动鼠标经过某个对象或者POI的时候,能够提示该对象的名称对用户来 ...
- 通过yum仓库安装mysql
1,下载安装包wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm2,安装mysql源yum -y ins ...
- 【airtest, python】报错:requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer')),解决方法如下
环境及设备 mac, xcode , iphonex 问题 最近出现一个让人费解的问题,airtest 没跑多长时间,服务就断掉,而且总是报“requests.exceptions.Connectio ...
- 慕课网页面app的滑动
#coding=utf-8from appium import webdriver def get_driver(): desc={ "platformName":"An ...