微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

大数取余

(a b) ((a c) (b c)) c
(a b) ((a c) (b c)) c
10000位大的数字可以分开算:
比如:
m=123
123 (1*10 2)*10 3
m%n 123%n (((1%n 10%n 2%n)%n 10%n) 3%n)%n

string m;
long n, d;
int i;
cin >> >> n;

d=0;
for (i 0; m.size(); i++)
{
   ((d 10) m[i] '0') n;
   // d*10是不超过10*n的,m[i] '0'是不超过10的,除非10*n或者n+9溢出,否则整个计算过程都不会溢出
}
cout << << endl;


 

描述

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.

输入

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.

输出

For each test case,you have to ouput the result of A mod B.

样例输入


2 3
12 7
152455856554521 3250

样例输出


2
5
1521

 

#include <iostream>
using namespace std;
int main()
{
 string m;
 long n,d;
 int i;
 while (cin >> m >> n)
 {
     d = 0;
  for (i = 0; i < m.size(); i++)
  {
   d = ((d * 10) % n + m[i] - '0') % n;
  }
  cout << d << endl;
 }
 return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐