對于給定的數字a,我必須找到一個小于a(稱為b)其數字和加b等于的數字a。a可以是負數。
例子:
findB(41) = 34, [34 3 4 = 41]
findB(-145) = -140, [-140 (-1) (-4) 0 = -145]
findB(14) = 7, [7 7 = 14]
findB(11) = 10, [10 1 0 = 11]
findB(-101) = 100, [-100 (-1) 0 0 = -101]
findB(458962713) = 458962758, [458962758 4 5 8 9 6 2 7 5 8 = 458962713]
這是我到目前為止所擁有的,但效率不高。此外,它不適用于奇數個位數(它必須輸出小數,即findB(1) = 0.5因為0.5 0 .5 = 1)。我試圖尋找其中的模式,i digitSum(i)但我無法弄清楚。有沒有更好的辦法?
int digitSum(int num) {
int sum = 0;
while (num) {
sum = num % 10;
num /= 10;
}
return sum;
}
int findB(int a) {
for (int i = 1; i < abs(a); i ) {
int sum = a < 0 ? i - digitSum(-i) : i digitSum(i);
if (sum == a)
return i;
}
return -1;
}
uj5u.com熱心網友回復:
正小數int最多有 10 位數字。它們的總和最多可以是 9 * 10 = 90。只需蠻力尋找 N-90 到 N 之間的數字。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/471202.html
上一篇:在比較2個串列并回傳list2中存在的list1元素中的出現次數后回傳一個串列
下一篇:一個序列的總和
