首先,将0附加到结果数字,直到长度是输入数字的倍数(f.x。int a = 3
- >数字的长度应该是数字3的倍数)。然后我必须将数字拆分为长度为a
的部分(即3
)。
例如:
以int a = 3
开头,号码:9056737152
如果在没有前导零的情况下拆分数字,则结果部分之一的长度为1:
9056737152 - > 905 673 715 2
从1 <> a
起,需要在左边添加零,直到拆分导致所有部分的长度为a
,即
009056737152 - &gt; 009 056 737 152
009056737152 - &gt; 009(第1部分)056(第2部分)737(第3部分)152(第4部分)
接下来,需要颠倒交替的部分,然后将所有部分加在一起。例如,撤消 2 和 4 部分:
251 + 737 + 650 + 009 = 1647
有什么想法吗?我迈出了第一步,尝试添加零:
int num = 5;
DecimalFormat df = new DecimalFormat("00000");
System.out.println(df.format(zahl));
问题是号码5
不能是静态的。
另一种方法:
int number = 9;
String str = String.format("%04d", 9); // 0009
System.out.printf("original number %d, numeric string with padding : %s", 9, str);
我需要将04(从格式 - "%04d"
)更改为我的整数a
。
答案 0 :(得分:0)
这里我的解决方案使用JS
const multiple = 3;
const number = 9056737152;
const strNumber = number.toString();
const zero = '0';
const needToAdd = multiple - strNumber.length % multiple;
const padded = zero.repeat(needToAdd).concat(strNumber);
const chunks = [];
for (let i = 0; i < padded.length / multiple; i++) {
let chunk = padded.slice(i * multiple, (i + 1) * multiple);
chunk = reverseString(chunk);
chunks.push(chunk);
}
const sum = chunks.reduce((total, chunk) => {
return total + parseInt(chunk, 10);
}, 0);
console.log(sum);
function reverseString(str) {
const symbols = str.split('');
symbols.reverse();
return symbols.reduce((total, l) => {
return total.concat(l)
});
}
希望,它会帮助你。