FAFU-OJ 1002 简单吗?
2013-08-10 12:28
288 查看
直接上源代码:
#include <stdio.h> #define N 150 int a ; int b ; int c ; void cheng(__int64 x, __int64 y) //进行大数乘法运算 { int i, j; i = 0; while(x > 0) { a[i] = x % 10; x /= 10; i++; } i = 0; while(y > 0) { c[i] = y % 10; y /= 10; i++; } j = 0; while(c[j] != -1) { i = 0; while(a[i] != -1) { b[i+j] += a[i] * c[j]; i++; } j++; } i = 0; while(b[i] != -1) { if(b[i] >= 10) { b[i+1] += b[i] / 10; b[i] = b[i] % 10; } i++; } } __int64 qiuyu(__int64 z) //进行大数求余运算 { int i = N - 1; __int64 t = 0; while(b[i] == 0 && i >= 0) { i--; } while(i>=0) { t = 10 * t + b[i]; t = t % z; i--; } return t; } int main() { int i; __int64 x, y, z; // freopen("data1.in","r",stdin); // freopen("data1.out","w",stdout); while(~scanf("%I64d%I64d%I64d", &x, &y, &z)) { if(z == 0) { printf("z不能为0\n"); continue; } for(i = 0; i < N; i++) { a[i] = -1; b[i] = 0; c[i] = -1; } cheng(x,y); /* for(i = N - 1; i >= 0; i--) printf("%d",a[i]); printf("\n"); for(i = N - 1; i >= 0; i--) printf("%d",b[i]); printf("\n"); for(i = N - 1; i >= 0; i--) printf("%d",c[i]); printf("\n"); */ printf("%I64d\n",qiuyu(z)); } return 0; }
相关文章推荐
- fafu -1002 简单吗? - 快速取模 (a*b)%mod
- fafu oj 1048 一个简单的问题 二分
- 杭电oj1002,简单理解,复杂解法
- 杭电oj 1002
- 九度OJ 1002
- 【华为OJ】简单错误记录
- 杭电 oj 1002 A + B Problem II 记录
- 西南科技大学OJ题 最简单的C程序0612
- 哈理工OJ 2281 11(简单的找规律题目)
- 杭电OJ 1002 大数相加
- FAFU-OJ 1408 摆花
- FAFU-OJ 1328 Free Cash
- 题解 简单限行dp 杭电OJ 1003
- 杭电OJ——1283 最简单的计算机
- 九度OJ-1002
- 哈理工OJ 1031 _OOOO_ Problem(简单模拟问题)
- 九度oj题目1002:Grading
- 杭电oj1002即用c++实现两个大数相加
- njupt_oj:简单矩阵 :超时,求高效算法
- 【华为OJ】简单密码破解