我想知道如何使用非常大的数字(在C ++中精确10 ^ 100)来进行竞争性编程。我知道像 GMP 这样的库存在,但它们不能用于像SPOJ或CodeChef这样的网站。
我使用了字符串,但实现它需要很多时间。现在我想知道其他程序员使用的有效方法和资源来学习这些方法。谢谢!
答案 0 :(得分:0)
我想知道其他程序员使用的有效方法
大多数情况下,在向SPOJ等在线评判系统或竞赛提交您的解决方案时,您无法使用任何第三方库(但有些竞赛只需要.out文件,因此无关紧要你是如何得到它们的。)
由于你不能使用任何外部的东西,竞争程序员自己编写他们的BigNum课程。使用C ++中的std::string
等动态数组或数据结构并不是那么难。
当你试图击败和解决在线判断/比赛问题时,练习是你最好的朋友 纸,铅笔,你的头脑,没有其他任何东西需要找到如何实现你的BigNum类。
考虑如何将大数字读取/写为std::string
,然后再进一步尝试添加/删除前导零,计算两个大数的总和......然后,进一步的事情将会更容易。