摘要:
题目意思很明确,知道四面体六条棱长求体积。数学问题,我们把四面体四个顶点放到坐标系中,并把A点设为原点,B坐标(x1,0,0),C坐标(x2,y2,0),D坐标(x3,y3,z3)。由于6条边,可以列出6个方程,因此可以解出x1,x2,y2,x3,y3,z3。而z3就是ABC面上的高。把ABC面积乘以z3再除以3就是答案了。 #include#include#includeusing namesp...
阅读全文
摘要:
问题的关键是如何将这些满足要求的数排序。我们可以将数组下标为0的元素设为1,并且将3个指针均放在它的位置上。以后,第i个指针乘以第i个数(i=1,2,3),取最小的放入数组,并且更新指针。这样可以保证数组里的元素都是单调递增而且不漏掉一个的。问题就解决了。 #includeusing namespace std;const long k = 100000;long num[k];int main(...
阅读全文
摘要:
用DP的思想保存已经求出的解的话速度会快一些。保存现今求出的所有取自x1~xm的数mod n的余数。扩展的时候就用一个余数乘以10,分别加上x1~xm,判断是否mod n为0,如果是,输出解,否则存入队列继续查找。 #includeusing namespace std;const int max_size = 0x40000;int queue[max_size];int num[10];int...
阅读全文
摘要:
在思考这题的时候想到了一个很好的解法。建立一棵用数组模拟的树,每个结点的值类型是一个char,内容是ABC中的一个。先把原01串处理为AB串并作为叶子结点,然后两个两个合并。合并的时候,两结点全A或全B时,父结点值为A或B,否则为C。树建立起来以后,先序遍历即可。注意只有在一个结点的值为C的时候才访问左右孩子。 #include#includeusing namespace std;const i...
阅读全文