C程序 - 数字之和,不包括相同的数字两次

时间:2017-12-01 15:06:42

标签: c

我做这样的数字之和:

events

但我需要的是,如果数字是(例如)123444,那么它总和中只包含一个4。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

将所有数字的数组初始化为零

int digits[10] = { 0 };

然后在添加数字之前,检查digits[that_digit]是否为零,如果是,则将其设置为1并添加到总和,如果没有继续...

while(number>0)
{
    int one = number%TEN;
    if ( ! digits[one]) {
       sum+=one;
       digits[one] = 1;
    }
    number=number/TEN;
}

编辑,没有数组版本

添加一个初始化为0的int,位i表示该数字i是否已被求和。

如果添加1,则位1设置为1,如果为2,则位2设置为1等...

int bits = 0;
while(number>0)
{
    int one = number%TEN;
    if (!(bits & (1<<one))) {
       sum+=one;
       bits |= 1<<one;
    }
    number=number/TEN;
}

答案 1 :(得分:0)

首先,你应该把一些代码放在这里,无论你尝试什么,给你基本的想法来解决你的问题我将简单的代码放在下面。

B = [2,1,0]

我在评论中提到的这段代码的解释,它可能不适用于所有测试用例,继续尝试自己。