题解 | #高精度整数加法#
高精度整数加法
https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6
#import <Foundation/Foundation.h>
int main(int argc, char* argv[]) {
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
char num1[10001];
char num2[10001];
gets(num1);
gets(num2);
NSString* str1 = [NSString stringWithFormat:@"%s", num1];
NSString* str2 = [NSString stringWithFormat:@"%s", num2];
// 默认str1更长 不够补0
if (str1.length < str2.length) {
NSString *temp = str1;
str1 = str2;
str2 = temp;
}
// 给str2前面补零
NSInteger length = str1.length - str2.length;
for (int i = 0; i < length; i++) {
str2 = [NSString stringWithFormat:@"0%@", str2];
}
NSInteger tt = 0, tt1 = 0, tt2 = 0;
NSString *st = @"";
for (int i = str1.length - 1; i >= 0; i--) {
tt1 = [[str1 substringWithRange:NSMakeRange(i, 1)] integerValue];
tt2 = [[str2 substringWithRange:NSMakeRange(i, 1)] integerValue];
st = [NSString stringWithFormat:@"%d%@", (tt1 + tt2 + tt)%10, st];
tt = (tt1 + tt2 + tt) / 10;
}
if (tt > 0) {
st = [NSString stringWithFormat:@"%d%@", tt, st];
}
printf("%@\n", st);
// printf("%@-%@\n", str1, str2);
// printf("str2 = %@", str2);
[pool drain];
return 0;
}
查看14道真题和解析