王小二° 发表于 2023-11-8 21:55:50

help

于老师觉得于龙加法还不够刺激,于是又设计了于龙减。
两个非负整数的于龙减“A-B”的意义是:在A的所有数字中,凡是在B中出现的数字都划掉,A中剩下的数就是结果,如果不剩结果就是0。
于龙想编程解决于龙减问题,他能成功吗?

输入格式:
空格分隔的两个非负整数A和B。A最多是5位数,B最多是3位数。

输出格式:
一个整数。

输入样例:
12346 24
输出样例:
136
输入样例:
20032 20
输出样例:
3
输入样例:
123456
输出样例:
123
这个怎么写啊,没有思路,可以讲一下吗。

人造人 发表于 2023-11-8 21:55:51

王小二° 发表于 2023-11-9 22:25
你好,这个代码通过不了

报了什么错?

isdkz 发表于 2023-11-8 22:06:52

这个问题可以通过以下步骤来解决:

1. 从输入中获取两个非负整数A和B。
2. 将A转换为字符串,并遍历字符串中的每个字符。
3. 对于每个字符,检查它是否在B中出现。如果出现,则将其从A中删除。
4. 将剩余的A转换回整数,并输出结果。

下面是一个实现这个算法的示例代码:

def yulong_subtraction(A, B):
    A = str(A)
    for digit in str(A):
      if digit in str(B):
            A = A.replace(digit, '')
    return int(A)

# 读取输入
input_str = input("请输入两个非负整数A和B,用空格分隔:")
A, B = map(int, input_str.split())

# 调用函数并输出结果
result = yulong_subtraction(A, B)
print(result)


希望这个解决方案对你有帮助!如果你还有其他问题,请随时提问。

王小二° 发表于 2023-11-8 22:54:07

用C语言,越简单越好,谢谢

人造人 发表于 2023-11-9 01:17:30

sh-5.2$ cat main.c
#include <stdio.h>
#include <string.h>

int main(void) {
    char a, b;
    scanf("%1023s%1023s", a, b);
    int result = 0;
    for(size_t i = 0; a; ++i) {
      if(strchr(b, a) != NULL) continue;
      result = result * 10 + (a - '0');
    }
    printf("%d\n", result);
    return 0;
}
sh-5.2$ ./main
12346 24
136
sh-5.2$ ./main
20032 20
3
sh-5.2$ ./main
123 456
123
sh-5.2$

王小二° 发表于 2023-11-9 22:25:56

人造人 发表于 2023-11-9 01:17


你好,这个代码通过不了
页: [1]
查看完整版本: help