1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
| //============================================================================ // Name : 大数取余.cpp // Author : vestinfo // Version : 1.0 // Copyright : http://www.cnblogs.com/vestinfo // Description : 对用long int存储溢出的数进行取余操作 //============================================================================ #include <iostream> #include <string.h> using namespace std; /* 原型:int mod(char* bigNumber,int divisor); 功能:求一个大数bigNumber(大于long int的存储最大值)被divisor除的余数。 参数:bigNumber是大数字符串,divisor是除数。 返回值: 余数 */ int mod(char* bigNumber,int divisor) { int i,len,ans=0; len = strlen(bigNumber); for(i=0;i<len;i++) { ans = ans*10 + bigNumber[i] - '0'; //前一位上的数的余数*10+当前位上的数 ans = ans % divisor; } return ans; } int mod(string bigNumber,int divisor) { int i,len,ans=0; len = bigNumber.size(); for(i=0;i<len;i++) { ans = ans*10 + bigNumber[i]-'0'; //前一位上的数的余数*10+当前位上的数 ans = ans % divisor; } return ans; } int main() { //test1 cout << mod("6666666666666666666666666666666666666666666661",6); //test2 char* inputNumber; cin >> inputNumber; cout << mod(inputNumber,6); return 0; }
|