这种类似大整数的处理的问题还是比较常见的,这道题应该是非常简单的版本。
题目的要求是这样的,输入的vector靠前的位置是数字的高位,因此应该先求出长度,然后从后面往前算。维护一个变量保存进位,这我就不说了。结果的vector怎么办呢?因为最后有可能有个总的进位,比如999加1,结果的vector会比输入的多出一位,因此结果还是从前往后存简单一些。最后如果有进位,就多push_back一个1,然...
分类:
其他好文 时间:
2014-05-14 00:31:48
阅读次数:
312
1 /** 2 大意: 给定区间(a,b), 将其转化为二进制
计算从a+(a+1)+(a+2)。。。。+(a+b-1),一共有多少次进位 3 思路: 将(a,b)区间内的数,转化为二进制后,看其每一位一共有多少个1 4
可知最低位循环为2,第二位循环为4 5 ...
分类:
其他好文 时间:
2014-05-13 20:31:13
阅读次数:
255
二进制相加,本质上就是大整数加法,有关大整数加法我的舍友教过我一个很好的方法,先用一个int数组保存结果,将两个数对应位置相加,全部加完后,再统一处理进位的问题。这个方法同样适用于大整数的乘法。
这个题没什么特别的,注意一下进位别搞错了就行了,还有其实不用像我写的这么麻烦,可以一开始先判断哪个更长一些,交换一下。代码会简洁很多。class Solution {
public:
strin...
分类:
其他好文 时间:
2014-05-13 08:02:00
阅读次数:
239
什么是源码编译器可运行档在Linux系统上面,一个文件能不能被运行看的是有没有可运行的那个权限(具有xpermission),不过,Linux系统上真正认识的可运行档其实是二进位文(binaryprogram),/usr/bin/passwd,/bin/touch这些个文件即为二进位程序码在Linux上面最标准的程序语言为C..
分类:
其他好文 时间:
2014-05-13 04:25:29
阅读次数:
285
题意:417 - Word Index
题意:每个字符串按题目中那样去映射成一个数字,输入字符串,输出数字
思路:这题还是比较水的,由于一共只有83000多个数字,所以对应一个个数字去映射就可以了,注意字符串进位的情况处理即可
代码:
#include
#include
#include
#include
using namespace std;
char str[10];
ma...
分类:
其他好文 时间:
2014-05-11 20:49:23
阅读次数:
428
题目链接:hdu 4726 Kia's Calculation
题目大意:给出两个数,然后两个数进行没有进位的加法,加数的各个位的数可以重新调整位置,但是不能有前导0的情况,要求加完之后的结果最大。
解题思路:从9开始配,直到0,但是因为9可能可以用0和9相加获得,所以一开始输出一个数,后面就可以统一操作。
0
9
9
55
55
0
#i...
分类:
其他好文 时间:
2014-05-10 09:46:18
阅读次数:
268
聪明的办法是想:求前10位,那只要前8位加起来,进2位就OK。本的办法,就是真的加起来,截前面10位。如我。numList
= str.split()sum = 0for i in range(0,len(numList)): sum += int(numList[i][0:50])
p...
分类:
其他好文 时间:
2014-05-09 23:16:32
阅读次数:
350
使用 System.IO 序列
F# 的一个有趣的能力是可以生成延迟序列(lazysequences,我们在第三章中讨论过),它可以用来处理大型文件,避免对文件预先分配的所有内存的开销,这样就能够处理那些太大而装不进 32 位系统的大型文件了。
生成序列非常简单,使用File.OpenText 方法,以文本文件流的形式打开文件。这个方法提供了一个流读取器(stream reader),使...
分类:
其他好文 时间:
2014-05-08 10:46:39
阅读次数:
290
本题可以使用长整形来记录数据的,因为最长不过10^8,但是如果把这题当做是无穷大数来做的话,难度指数就直线上升了。
这里给出使用string来做无穷大减法的解法。
要处理的问题:
1 string大小比较问题,不能使用原始的<号
2 如何进位的问题
3 符号问题,因为这里只求差异就可以了,所以返回绝对值就够了。
这样做本题还是有一定难度, 而且可以锻炼到一些高级点的知识的运用,挺好。...
分类:
其他好文 时间:
2014-04-29 13:46:22
阅读次数:
277
大数乘法的步骤(先戳我看看大数加法的思想):
首先我们输入要相乘的2个数字,然后逆序。用2层循环来相乘,把下标[i]*[j]计算的结果放在下标[i*j-1]中(下标从1开始),建议及时处理进位问题(char字符范围比较小)。
最后从高位开始输出。
#include
#include
#define MAX 1000
using namespace std;
void InputN...
分类:
其他好文 时间:
2014-04-28 10:24:42
阅读次数:
371