hdu 1002 A + B Problem II
来源:互联网 发布:域名注册成功如何备案 编辑:程序博客网 时间:2024/06/01 09:51
难度:2
1000位的书已经超过了证书的范围了,就连 unsigned long long都只能用到64位,所以唯一的办法就是用字符串模拟了,这就是大数加法的字符串方法(当然还有一种方法叫做离散傅里叶变换DFT,用快速傅里叶变换(FFT)优化)
这里用的代码是最暴力的大数乘法:
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 1100;char a[maxn] , b[maxn];int T , cas = 1;int main() { scanf("%d" , &T); while(T--) { printf("Case %d:\n" , cas++); scanf("%s%s" , a , b); printf("%s + %s = " , a, b); int la = strlen(a) , lb = strlen(b); int len = max(la , lb); for(int i=0;i<la/2;i++) swap(a[i] , a[la-1-i]); for(int i=0;i<lb/2;i++) swap(b[i] , b[lb-1-i]); for(int i=0;i<la;i++) a[i] -= '0'; for(int i=0;i<lb;i++) b[i] -= '0'; for(int i=la;i<len;i++) a[i] = 0; for(int i=lb;i<len;i++) b[i] = 0; int c = 0; for(int i=0;i<len;i++) { int tmp = (a[i] + b[i] + c); a[i] = tmp % 10; c = tmp / 10; } if(c) a[len++] = c; int i = len-1; while(i>0 && a[i] == 0) i--; for(;i>=0;i--) printf("%d" ,a[i]); puts(""); if(T) puts(""); } return 0;}
0 0
- HDU 1002 A + B Problem II
- HDU 1002A + B Problem II
- HDU 1002 - A + B Problem II
- HDU 1002 A + B Problem II
- HDU 1002 A + B Problem II
- HDU 1002 A + B Problem II
- HDU 1002 A + B Problem II
- HDU 1002 A + B Problem II
- hdu 1002 A+B Problem II
- HDU 1002 A + B Problem II
- hdu 1002 A + B Problem II
- HDU 1002 A + B Problem II (BigNums)
- hdu 1002 A + B Problem II
- hdu 1002 A + B Problem II
- hdu 1002 A + B Problem II
- HDU 1002 A + B Problem II
- HDU 1002 A + B Problem II
- Hdu---A + B Problem II---1002
- DAY08------java数组、操作、冒泡、排序、array类、for each(全)
- java入门一DAY09------java 面向对象全面总结
- 20140403
- Nginx配置文件详细说明
- nginx.conf中文详解
- hdu 1002 A + B Problem II
- Pick numbers
- hashcode方法和equals方法
- 03自定义认证
- FKJFKJFHJGDHHGDFHKFKG
- Quick fix for Ruby after Xcode 5.1 update
- 推箱子 C语言版
- xhedit用js提交表单后台接收不到值
- Linux下MySQL 5.5.12源码编译安装.