- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个像 {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9, 3, 2, 3, 8} 这样的数组,其中每个整数代表百分比。数字的目标总和应该是 100%,但由于它们已四舍五入到最接近的整数(向上舍入 .5),因此总和可能不是 100。我需要知道四舍五入前的实际值是否总和可以达到 100%
我尝试过的:我认为数组中的值可以是向上舍入的结果,在这种情况下原始值将小于 0.5,或者该值可以是向下舍入的结果,在这种情况下原始值将大于 0.4。所以我尝试了这个,知道差异(例如从上面的例子)是 7,是否存在 X*(-0.5) + Y*0.4 的某种组合,其中 X 和 Y 是常数,其总和 = 计算数组的长度,那会让我相差7?这种策略适用于一些测试用例,例如 {12,12,12,12,12,12,12,12} 和 {13,13,13,13,13,13,13,13} 但根据这个还不行对于答案,可以使这个数组的目标总和为 100%,因此我的函数应该返回 true。
这是我试过的代码。
Boolean combination(int difference, int count)
{
decimal d;
for (int x = 0; x <= count;x++)
{
for(int y=0; y<=count-x;y++)
{
d = (x * (decimal)(-0.5)) + (y * (decimal)(0.4));
if ( d == difference)
return true;
}
}
return false;
}
原创练习题,来自topcoder.com SRM 544 DIV 2; > 700 次提交的成功率 < 20%。我猜这是一个棘手的问题:)
在正常选举中,人们期望每位候选人获得的百分比加起来恰好为 100%。有两种情况可能不是这种情况:如果选举存在欺诈,或者报告的百分比是四舍五入的。在最近的一次选举中,已知选民人数恰好是 10000。假设选举是公平进行的,每个选民只投给了一名候选人。在报告之前,每位候选人获得的选票百分比四舍五入到最接近的整数。位于两个连续整数中间的百分比被四舍五入。投票部正在寻找选举舞弊的证据。你会得到一个 int[] percentages,给出每个候选人所报告的选票百分比。如果选举肯定是欺诈性的,则返回包含“YES”的字符串,否则返回“NO”(引号只是为了清楚起见)。也就是说,如果 10000 名选民中的每一个都不能恰好投票给一名候选人,则返回“YES”,否则返回“NO”。
感谢任何帮助我的人。请不要发布对此的所有答案,我所要求的只是我可能没有考虑过的新思路。
最佳答案
假设我们有一组整数 { N1, N2, N3 }
。
原数最少能达到多少和?
它是{ N1-0.5, N2-0.5, N3-0.5 }
数组中元素的总和,我们可以改写为:
sum({ N1, N2, N3}) - 0.5 * count({ N1, N2, N3 })
最小金额必须小于或等于到100。
原数最多能达到多少和?
是{N1+0.4999...,N2+0.4999...,N3+0.4999...}
数组中元素的和,我们可以改写为:
sum({ N1, N2, N3}) + 0.4999... * count({ N1, N2, N3 })
最大总和必须或等于100。
我们不想处理 0.499...
所以我们可以将其重写为:
sum({ N1, N2, N3}) + 0.5 * count({ N1, N2, N3 })
但在这种情况下,它不能等于到100,即它必须严格大于100>.
所以我们可以用C#
编写如下代码:
static bool CanSumTo100(IList<int> numbers)
{
return numbers.Sum() - 0.5 * numbers.Count <= 100 &&
numbers.Sum() + 0.5 * numbers.Count > 100;
}
如果不想处理 float ,可以使用整数:
static bool CanSumTo100(IList<int> numbers)
{
int sum = numbers.Sum();
int count = numbers.Count;
return 2 * sum - count <= 200 &&
2 * sum + count > 200;
}
关于c# - 组合总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24282966/
我基本上有三个表: hunt_c_usershunt_c_collected_eggshunt_c_achievements 我目前只使用 hunt_c_users 和 hunt_c_collecte
我已经计算了不同表中计数的总和。这会执行两次,每个 performanceID 一次。现在我想得到两个总和的总和。 下面是我目前做的两个总和的代码: SELECT SUM((COUNT (Bo
我有一个对 2 个值求和的脚本。我计划添加更多值(value),但首先我需要让它发挥作用。人们告诉我给他们 NUMBER 值,所以我这样做了,但现在它甚至没有给出输出。 base = 0; $("#F
我正在尝试计算在我们的数据库中跟踪的花费总额。每个订单文档包含一个字段“total_price” 我正在尝试使用以下代码: db.orders.aggregate({ $group: {
给定 Excel 2013(或更高版本)中的 2 个命名表: tbl发票 ID InvRef Total 1 I/123 45 2 I/234
希望你们一切都好。我来这里是因为我从今天早上开始就试图解决一个问题,我再也受不了了。 这就是上下文:我有一个 excel 工作簿,其中有不同的工作表,其中包含不同国家/地区的不同商业计划。我的目标是制
我有一份报告显示客户订购的产品及其价格: CompanyA Product 7 14.99 CompanyA Product 3 45.95 CompanyA Prod
我使用此python客户端: https://github.com/ryananguiano/python-redis-timeseries 如何汇总所有匹配? ts = TimeSeries(cli
希望创建一个总和和计数公式,该公式将自动调整以适应范围内插入的新行。 例如,如果我在单元格 D55 中有公式 =SUM(D17:D54)。每次我在该范围内插入新行时,我都需要更改公式的顶部范围来解释它
所以,我需要聚合日期相同的行。 到目前为止,我的代码返回以下内容: date value source 0 2018-04-08 15:52:26.1
我有数字输入 数量约为 30 我需要将它们全部汇总到一个字段 我拥有的在下面 查看:
您好,我正在尝试根据以下数据计算过去三个月中出现不止一次的不同帐户 ID 的数量;我想要 2 作为查询结果,因为 test1@gmail.com 和 test2@gmail.com 出现超过 1 次。
我有两个带有以下字段的表: ... orders.orderID orders.orderValue 和 payments.orderID payments.payVal 在 payments.pay
我想按 image_gallery 和 video_gallery 两列的 DESC 进行排序。 SELECT b.*, c.title as category, (S
实际上我的原始数据库为 SELECT sum(data1,data2) as database_value,sum(data3,data4) as database_not_value from t
我试图获取三个分数中每一个的值并将它们相加并显示在“总计:”中。我的问题是,我不知道如何做到这一点,以便每次其中一个分数值发生变化时,相应的总分值也会随之变化。 我可以在某处调用“onchange”来
如何获得按第一个值分组的元组列表中第二个和第三个值的总和? 即: list_of_tuples = [(1, 3, 1), (1, 2, 4), (2, 1, 0), (2, 2, 0)] expec
我正在尝试将我的列表中的整数转换为列表的总和和平均值,并说明任何低于冰点 F<32 的温度。每当我尝试获取总和或平均值时,我都会收到错误提示“+: 'int' 和 'str' 不支持的操作数类型”。我
在我的 ios 项目中,我使用了两个实体 (CoreData):具有一对多关系的 Person 和 Gifts 我知道如何计算给一个人的礼物总和: NSDecimalNumber *orderSum=
我有两个表(输入和类别): CREATE TABLE categories ( iId INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, sNam
我是一名优秀的程序员,十分优秀!