HDU 1212 Big Number(简单的大数取模)
发布时间:2020-12-14 02:24:33 所属栏目:大数据 来源:网络整理
导读:链接:http://acm.hdu.edu.cn/showproblem.php?pid=1212 Big Number Time Limit: 2000/1000 MS (Java/Others)????Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6037????Accepted Submission(s): 4226 Problem Description As we know,Bi
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1212 Big NumberTime Limit: 2000/1000 MS (Java/Others)????Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6037????Accepted Submission(s): 4226
Problem Description
As we know,Big Number is always troublesome. But it's really important in our ACM. And today,your task is to write a program to calculate A mod B.
To make the problem easier,I promise that B will be smaller than 100000. Is it too hard? No,I work it out in 10 minutes,and my program contains less than 25 lines.
?
Input
The input contains several test cases. Each test case consists of two positive integers A and B. The length of A will not exceed 1000,and B will be smaller than 100000. Process to the end of file.
?
Output
For each test case,you have to ouput the result of A mod B.
?
Sample Input
?
Sample Output
题意:求长度不大于1000的a模于b(b<=100000)。 解题思路:题目看似很难,其实这是一道很简单的大数求模。首先要先有数学知识:a,b同余有,a%m = b%m ;? (a±b)%m = (a%m±b%m)%m ;(a*b)%m = (a%m*b%m)%m 。所以:将大数转化为字符串处理,然后问题可以等价于各个位数上的分别取模。 <span style="font-size:18px;">#include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; const int maxn=1010; char a[maxn]; int m,b[maxn]; int gcd(char *a,int m) { int len=strlen(a); for(int i=0;i<len;i++) b[i]=a[i]-'0'; int ans=0; for(int i=0;i<len;i++) { ans=(ans*10+b[i])%m; } return ans; } int main() { while(cin>>a>>m) { cout<<gcd(a,m)<<endl; } return 0; } </span> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |