1113 钱串子的加法
时间: 2024-04-30 12:19:50 浏览: 9
钱串子的加法是一种特殊的加法运算,它的规则如下:
将两个钱串子竖着摆放,个位对齐,然后从低位向高位逐位相加。当某一位相加的结果超过9时,只保留个位数,将十位上的数加到下一位上。最终得到的结果就是钱串子的加法结果。
例如,计算钱串子123和456的和,步骤如下:
```
123
+ 456
-----
579
```
因此,钱串子123和456的和为579。
相关问题
人类习惯用 10 进制,可能因为大多数人类有 10 根手指头,可以用于计数。这个世界上有一种叫“钱串子”(学名“蚰蜒”)的生物,有 30 只细长的手/脚,在它们的世界里,数字应该是 30 进制的。本题就请你实现钱串子世界里的加法运算。 输入格式: 输入在一行中给出两个钱串子世界里的非负整数,其间以空格分隔。 所谓“钱串子世界里的整数”是一个 30 进制的数字,其数字 0 到 9 跟人类世界的整数一致,数字 10 到 29 用小写英文字母 a 到 t 顺次表示。 输入给出的两个整数都不超过 10 5 位。 输出格式: 在一行中输出两个整数的和。注意结果数字不得有前导零。
#include <iostream>
#include <string>
using namespace std;
int main() {
string a, b;
cin >> a >> b;
int lena = a.size(), lenb = b.size();
if (lena < lenb) { // 保证 a 的长度不小于 b
swap(a, b);
swap(lena, lenb);
}
int carry = 0; // 进位
for (int i = 1; i <= lena; i++) {
int numa = (a[lena-i] >= '0' && a[lena-i] <= '9') ? a[lena-i]-'0' : a[lena-i]-'a'+10;
int numb = 0;
if (i <= lenb) {
numb = (b[lenb-i] >= '0' && b[lenb-i] <= '9') ? b[lenb-i]-'0' : b[lenb-i]-'a'+10;
}
int sum = numa + numb + carry;
carry = sum / 30;
sum %= 30;
if (i == lena && carry) {
cout << carry;
} else {
cout << (char)(sum < 10 ? sum+'0' : sum-10+'a');
}
}
return 0;
}
c语言查找字符串子串
可以使用C语言中的strstr函数来查找字符串子串。该函数的原型为:
```c
char *strstr(const char *str1, const char *str2);
```
其中,str1为要查找的字符串,str2为要查找的子串。函数返回值为指向第一次出现子串的指针,如果没有找到则返回NULL。
示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "hello world";
char str2[] = "world";
char *ptr = strstr(str1, str2);
if (ptr != NULL) {
printf("子串在字符串中的位置:%d\n", ptr - str1);
} else {
printf("未找到子串\n");
}
return 0;
}
```
输出结果为:
```
子串在字符串中的位置:6
```