Sicily 1020 Big Integer(高精度运算)
2010-07-12 02:47
513 查看
//高精度取模运算 //一开始套了个原先自己写的模板,高精度%高精度,结果TLE 2次,原因很明显,被除数可达400位,2E除以2就要做1E次减法必定TLE //所以只能自己写个最原始最朴素的才能过,考虑到除数最大是1000 //因此可以自己写一个string%int型的取模函数,这样速度会快很多,而且很简短 //改用char和scanf应该可以更快 #include<iostream> #include<string> using namespace std; int mod(string dividend,int divisor) { int p = 0;//对被除数的位数的指针 int temp = dividend[p++] - '0'; while(1) { while(temp < divisor) { if(p == dividend.size()) return temp;//如果指针超过被除数最低位还不能找到比除数小的数跳出,此时temp为答案 temp = temp * 10 + dividend[p++] - '0'; } temp %= divisor; } } int main() { int t,n,b[102]; string num; cin >> t; while(t--) { cin >> n; for(int i = 0;i < n;++i) cin >> b[i]; cin >> num; cout << "("; for(int i = 0;i < n;++i) { cout << mod(num,b[i]); if(i != n - 1) cout <<","; } cout << ")" << endl; } return 0; }
相关文章推荐
- 高精度运算类(BigInteger,BigDecimal)
- java中进行高精度、大数运算总结BigInteger BigDecimal
- sicily 1020 Big Integer
- 高精度,贪心 - FZU 2281 (BigInteger)
- Sicily 1020. Big Integer | 大整数取模运算
- 【JavaSE】Java高精度计算类:BigInteger和BigDecimal
- 【正整数模板运算(C++手写BigInteger类和java.math.BigInteger以及java.math.BigDecimal)】
- A * B Problem (Big integer version) 【高精度】
- A + B Problem (Big integer version) 【高精度】
- 1020. Big Integer
- BigInteger之高精度乘法
- 大数字运算( BigInteger 、 BigDecimal)
- C# 4.0 大数的运算--BigInteger的应用详解
- 特别大的数的阶乘问题,利用BigInteger进行运算
- BigInteger与BigDecimal高精度计算
- 【原】biginteger。大数乘法。大数运算。“无限大数字”乘法。大数乘法两种方法对比
- Sicily 1201 01000001(高精度运算)
- sicily 1020 高精度求余
- Java 工具类总结(4): 保证精度的运算 - BigInteger / BigDecimal
- [中等] 比较完整的BigInteger高精度整数类(C++实现)