将一个数字n(10≤n≤1,000,000,000)拆成左右两部分,将左边的数字逆转后与右边的数字相加,输出求得的和值 。
比如:123456,拆成:321+456=777
比如:147852,拆成:741+852=1593
如果数字的位数是奇数,则右半部分应比左半部少一位
比如:12345,拆成:321+45=366
比如:95078,拆成:059+78=137
将一个数字n(10≤n≤1,000,000,000)拆成左右两部分,将左边的数字逆转后与右边的数字相加,输出求得的和值 。
比如:123456,拆成:321+456=777
比如:147852,拆成:741+852=1593
如果数字的位数是奇数,则右半部分应比左半部少一位
比如:12345,拆成:321+45=366
比如:95078,拆成:059+78=137
#include <stdio.h>
#include <string.h>
int main() {
long long n;
scanf("%lld", &n);
char str[20]; // 假设n最多10位,再加上逗号和结束符,总共20位
sprintf(str, "%lld", n); // 将n转成字符串
int len = strlen(str);
int half = (len + 1) / 2;
long long left = 0, right = 0;
for (int i = 0; i < half; i++) {
left = left * 10 + (str[half - 1 - i] - '0'); // 计算左半部分
}
for (int i = half; i < len; i++) {
right = right * 10 + (str[i] - '0'); // 计算右半部分
}
printf("%lld\n", left + right);
return 0;
}