网站和小程序的区别,怎么做电商网站 用户画像,百度验证网站的好处,我的电脑做网站服务器1281. 整数的各位积和之差
给你一个整数 n#xff0c;请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。 示例
输入#xff1a;n 234
输出#xff1a;15
解释#xff1a;
各位数之积 2 * 3 * 4 24
各位数之和 2 3 4 9
结果 24 - 9 15示例
…1281. 整数的各位积和之差
给你一个整数 n请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。 示例
输入n 234
输出15
解释
各位数之积 2 * 3 * 4 24
各位数之和 2 3 4 9
结果 24 - 9 15示例
输入n 4421
输出21
解释
各位数之积 4 * 4 * 2 * 1 32
各位数之和 4 4 2 1 11
结果 32 - 11 21对于这道题我首先想到的是通过循环找出各个位循环首先要知道输入数字的位数。有以下两种方法 方法一用Math.log10()取对数
int number 12345;
int digits (int) Math.log10(number) 1;
System.out.println(整数 number 的位数为 digits);方法二通过String.valueOf()把数值转成字符串
int number 12345;
String strNumber String.valueOf(number);
int digits strNumber.length();
System.out.println(整数 number 的位数为 digits);我采用方法一下面是我的代码 class Solution {public int subtractProductAndSum(int n) {int digits (int) Math.log10(n);int sum 0;int product 1;for (int i digits; i 0; i) {sum n / Math.pow(10, i);product * n / Math.pow(10, i);n % Math.pow(10, i);}return (product - sum);}
}上述代码运行之后无法通过测试2也就是输入4421时输出为22。问了GPT之后答案是在你的代码中乘法计算的结果错误是因为你使用了n / Math.pow(10, i)作为乘数而实际上它们的类型是double会导致精度丢失。修改过后的代码如下 class Solution {public int subtractProductAndSum(int n) {int n 4421;int sum 0;int product 1;int digits (int) Math.log10(n);for (int i digits; i 0; i--) {int digit n / (int) Math.pow(10, i) % 10;sum digit;product * digit;}return (product - sum);}
}现在这个代码可以正常通过了