`
bcyy
  • 浏览: 1827361 次
文章分类
社区版块
存档分类
最新评论

杭电OJ——1212 Big Number

 
阅读更多

Big Number

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
2 3 12 7 152455856554521 3250

Sample Output
2 5 1521

Author
Ignatius.L

Source

Recommend
Eddy
在做题之前,先了解这样一些结论:
A*B % C = (A%C * B%C)%C
(A+B)%C = (A%C + B%C)%C
如 532 mod 7 =(500%7+30%7+2%7)%7;
当然还有a*b mod c=(a mod c+b mod c)mod c;
如35 mod 3=((5%3)*(7%3))%3
有了这一些结论,题目就好做了!
代码如下:
#include<iostream>
#include<string.h>
using namespace std;
const int MAX=100010;


int main()
{
	char str[MAX];
	int s,len,sum;
	while(scanf("%s%d",str,&s)!=EOF)
	{
		len=strlen(str);
		sum=0;
		for(int i=0;i<len;i++)
		sum=(sum*10+(str[i]-'0')%s)%s;
		cout<<sum<<endl;
	}
	return 0;
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics