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的更多相关文章

  1. UVA 11488 Hyper Prefix Sets (Trie)

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  2. UVA 11488 Hyper Prefix Sets (字典树)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  3. uva 11488 - Hyper Prefix Sets(字典树)

    H Hyper Prefix Sets Prefix goodness of a set string is length of longest common prefix*number of str ...

  4. UVA 11488 Hyper Prefix Sets (字典树)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  5. uva 11488 Hyper Prefix Sets(狂水)

    题意: 获得集合中最长前缀长度*有该前缀个数的最大值 Prefix goodness of a set string is length of longest common prefix*number ...

  6. UVa 11488 - Hyper Prefix Sets

    找 前缀长度*符合该前缀的字符串数 的最大值 顺便练了一下字典树的模板 #include <iostream> #include <cstdio> #include <c ...

  7. 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 ...

  8. 【习题 3-10 UVA - 1587】Box

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 枚举某个顶角的三个相邻面就好. 看看这三个相邻面有没有对应的面. 以及3个相邻面的6个边. 能否分成2个a,2个b,2个c 也即每个 ...

  9. Mango Weekly Training Round #3 解题报告

    A. Codeforces 92A Chips 签到题.. #include <iostream> #include <cstdio> #include <cstring ...

随机推荐

  1. C99新增内容之变长数组(VLA)

    我们在使用多维数组是有一点,任何情况下只能省略第一维的长度.比如在函数中要传一个数组时,数组的行可以在函数调用时传递,当属数组的列却只能在能被预置在函数内部.看下面一个例子: #define COLS ...

  2. centos 修改ssh端口,以支持vsftp

    vi /etc/ssh/sshd_config Port 22 Port 2225执行/etc/init.d/sshd restart   启动SSH服务,这样SSH端口将同时工作与22和2225上. ...

  3. css样式变 及实际用法

    <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Con ...

  4. Android Studio项目中有用文件与可忽略文件(初学者)

    可通过Settings --> Version Control --> Ignored Files进行设置或察看: 支持指定文件或文件夹,也支持匹配模式. Android Studio 中 ...

  5. 三星的Knox Warranty Bit原理

    它是如何触发的? 这个值的状态是烧录在主板上,无法刷写修改, 从0到1 不可逆,除非替换硬件 If a non-Knox boot loader or kernel has been installe ...

  6. Spark on Yarn集群搭建

    软件环境: linux系统: CentOS6.7 Hadoop版本: 2.6.5 zookeeper版本: 3.4.8 主机配置: 一共m1, m2, m3这五部机, 每部主机的用户名都为centos ...

  7. 经典实用SQL Server语句大全总结(一)

    简要介绍基础语句:1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创 ...

  8. python sqlalthemy 总结

    orm 数据状态的预知识 瞬时状态:刚创建的对象还没有被Session持久化.缓存中不存在这个对象的数据并且数据库中没有这个对象对应的数据为瞬时状态这个时候是没有OID. 持久状态:对象经过Sessi ...

  9. JAVA中浅复制与深复制

    1.浅复制与深复制概念⑴浅复制(浅克隆)被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. ⑵深复 ...

  10. tomcat8版本实现虚拟主机

    vim /etc/hosts192.168.30.21   www.crushlinux.com192.168.30.21   www.cloud.com [root@localhost ~]# cd ...