Algorithm 版 (精华区)
发信人: Lerry (life is waiting...), 信区: Algorithm
标 题: [合集]超音速天文数字加法程序!终于比pineapple的快了!:P
发信站: 哈工大紫丁香 (2003年10月12日12:24:09 星期天), 站内信件
────────────────────────────────────────
hewind (中国捣蛋研究院·院士) 于 2003年10月06日19:16:22 星期一 说道:
输入长度无限制~~~
http://202.118.250.9/borlandclub/bbs/dispbbs.asp?boardid=10&id=11
--------------------------------------------------------------
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <iostream>
#include "time.h"
#define MAX( a , b ) ( ( a > b ) ? ( a ) : ( b ) )
using namespace std ;
inline char* add( char *op1 , char *op2 )
{
int len1 = strlen( op1 ) ;
int len2 = strlen( op2 ) ;
int maxlen = MAX( len1 , len2 ) ;
char *res = new char[ maxlen + 2 ] ;
res += maxlen + 1 ;
*res = '\0' ;
char* tp1 = op1 + len1 - 1 ;
char* tp2 = op2 + len2 - 1 ;
int add = 0 ;
int sum ;
while( tp1 >= op1 && tp2 >= op2 ){
sum = *tp1-- + *tp2-- - '0' - '0' ;
*--res = sum % 10 + add + '0' ;
add = sum / 10 ;
}
while( tp1 >= op1 ){
sum = *tp1-- + add - '0' ;
*--res = sum % 10 + '0' ;
add = sum / 10 ;
}
while( tp2 >= op2 ){
sum = *tp2-- + add - '0' ;
*--res = sum % 10 + '0' ;
add = sum / 10 ;
}
if( add ){
*--res = add + '0' ;
}
return res ;
}
int main()
{
string op1 , op2 ;
cout << "please input op1" << endl ;
cin >> op1 ;
cout << "pelase input op2" << endl ;
cin >> op2 ;
char *p = add( ( char * )op1.c_str() , ( char * )op2.c_str() ) ;
cout << p << endl ;
delete[] p ;
system( "pause" ) ;
}
────────────────────────────────────────
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:1.375毫秒