随笔分类 -  高精度

摘要:题意:用A~Z表示0~25..给出2个200以内的XYZ-26进制数..即a0 a1 a2 a3……an求出和..用XYZ-26进制表示..其中XYZ-26 -> 10进制是m = a0 * 26^(n-1) + a1 * 26^(n-2) + … + an-3* 26^2 + an-2*26 + an-1思路:不用进行转换然后相加再换回去..直接相加..模拟进位..Tips:※可以直接把短的加到长的字符串上..eg:ABC+CD就是 ABC + CD ---------... 阅读全文
posted @ 2012-08-07 16:18 Griselda. 阅读(251) 评论(0) 推荐(0) 编辑
摘要:题意:很长很长的小数相加..思路:用1000长的数组处理两个小数..前500存整数..后500存小数..然后相应位相加..然后输出除去前导0和后面0的..Tips:※ strchr(char *a, char c) 返回的是 a 字符数组中 c 字符的第一次出现的位置..返回的不是迭代器的位置..而是地址..※ 主要就是对字符串的处理..要很小心阿..※ 以字符数组的形式读入高精度小数..然后用他们 - ‘0’..把字符变成整数来处理..最后以整数方式输出..Code:View Code 1 #include <stdio.h> 2 #include <cstring> 阅读全文
posted @ 2012-08-07 00:00 Griselda. 阅读(304) 评论(0) 推荐(0) 编辑
摘要:题意:求出2000以内的斐波那契数思路:大数相加Tips:---Code:View Code 1 #include <stdio.h> 2 #include <cstring> 3 4 int f[1010][220]; 5 int main() 6 { 7 int i, j; 8 int n, T; 9 int tmp, ttmp;10 f[1][0] = f[2][0] = 1;11 for(i = 3; i < 1010; ++i){12 for(j = 0; j <= 210; ++j)13 f[i][... 阅读全文
posted @ 2012-08-06 19:56 Griselda. 阅读(206) 评论(0) 推荐(0) 编辑
摘要:题意:有m个人拿50 n个人拿100 前台没零钱..问多少种合法的排队方法思路:网上摘录:假设m=4,n=3,的一个序列是:0110100显然,它不合法然后我们把他稍微变化一下:把第一个不合法的“1”后面的所有数0位为1, 1位为0;这样我们得到了另一个序列:0111011,说明每个不合法的都有一个这样的序列跟他一一对应所以计算公式就是:合法的排列方式=所有排列方式-非法排列方式这里非法排列方式的计算 就是:(-)*M!*N!然而在这题,因为每个人都是不同的,所以还要乘以 M!*N!所以得出最终方程:F(N)=(-)*M!*N! ;然后再化简一下;F(N)=(M+N)! * (M-N+1)/( 阅读全文
posted @ 2012-08-06 17:31 Griselda. 阅读(557) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示