首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#适用于那些数学好的人

C#适用于那些数学好的人
EN

Stack Overflow用户
提问于 2010-12-23 00:25:58
回答 3查看 236关注 0票数 1

我有一个介于10和30之间的数字,我需要在4次加法或减法运算中表示这个数字,但两者都应该至少出现一次,所以我们总是需要使用加法和减法至少一次。

下面是一个示例:

我需要生成的数字是21 : 5+6,8-5,9-4,1+1 (11+3+5+2)=21 (或者任何其他组合等于21)

我需要为10到30之间的任何数字生成4个操作

有人能帮我吗?

如果你有一个用Java,C#或VB编写的示例,它对我来说很好用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-23 00:48:43

也许像这样的东西,定制它以满足您的需求:

代码语言:javascript
运行
复制
Random rn = new Random();
        int a, b, c, d;

        int min = 3, max = 10;
        int desired = 30;
        while
            (
            (
            (a = rn.Next(min, max))
            + (b = rn.Next(min, max))
            + (c = rn.Next(min, max))
            + (d = rn.Next(min, max))
            )
            != desired
            ) { }

        int x = rn.Next(-1* (a - 1 ), a - 1);
        int y = rn.Next(-1 * (b - 1), b - 1);
        int z = rn.Next(-1 * (c - 1), c - 1);
        int v = rn.Next(-1 * (d - 1), d - 1);

        string result =
            (x >= 0 ? (a - x) + "+" + x : (a + -1 * x) + "-" + -1 * x) + " + " +
            (y >= 0 ? (b - y) + "+" + y : (b + -1 * y) + "-" + -1 * y) + " + " +
            (z >= 0 ? (c - z) + "+" + z : (c + -1 * z) + "-" + -1 * z) + " + " +
            (v >= 0 ? (d - v) + "+" + v : (d + -1 * v) + "-" + -1 * v);
票数 1
EN

Stack Overflow用户

发布于 2010-12-23 00:33:07

家庭作业?

您可以尝试将其拆分为两个操作:

  • 将目标数字写成4个数字的和
  • 将这些数字写成加法或减法。

你知道System.Random的事吗?您可以使用它来生成一些数字,然后尝试是否可以使它们“适合”。

票数 1
EN

Stack Overflow用户

发布于 2010-12-23 00:43:59

我曾经对此找到了一个像样的解决方案。但遗憾的是忘记了。但我发现的是,这个人通过混合使用LINQ和随机操作符来实现,以获得所有的可能性,就像IEnumerable和.First()一样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4511244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档