您的位置:首页 > 其它

HDU1212 Big Number【大数+模除】

2017-12-08 12:49 316 查看

Big Number

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 8835    Accepted Submission(s): 5994


[align=left]Problem Description[/align]
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.

 

[align=left]Input[/align]
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.

 

[align=left]Output[/align]
For each test case, you have to ouput the result of A mod B.

 

[align=left]Sample Input[/align]

2 3
12 7
152455856554521 3250

 

[align=left]Sample Output[/align]

2
5
1521

 

[align=left]Author[/align]
Ignatius.L
 

[align=left]Source[/align]
杭电ACM省赛集训队选拔赛之热身赛

问题链接HDU1212 Big Number


问题简述:(略)

问题分析

  这是一个大数模除问题,需要知道的的公式是(a + b) % m = (a % m + b % m) % m和a * b %m = (a % m * b % m) % m。所以,在从数字字符拼装成大数的过程中就可以不断地进行模除,使得大数模除运算变成小数运算。

程序说明:(略)

题记:(略)

参考链接:(略)

AC的C语言程序如下:

/* HDU1212 Big Number */

#include <stdio.h>

#define BASE 10
#define N 1000
char a[N + 1];

int main(void)
{
int b, ans, i;

while(~scanf("%s%d", a, &b)) {
ans = 0;
i = 0;
while(a[i]) {
ans *= BASE;
ans %= b;
ans += a[i] - '0';
i++;
}

printf("%d\n", ans % b);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: