A24098. 特殊计算方式
填空题
中等
知识点
题目描述
特殊计算方式
题目描述
明是班上的数学小天才,最近他迷上了四舍五入和数字拆解的游戏!他发明了一种特殊的计算方式:
1 四舍五入:先对一个实数进行取整(比如3.6->4,2.4->2)。
2 数字乘积:然后计算这个整数的各位数字相乘的结果(比如123 -> 1*2*3=6)。
3 取模运算:最后,把乘积结果对10007取模(防止数字太大)。
现在,小明想请你帮他验证他的计算是否正确!
输入描述
输入一个实数x
输出描述
输出通过计算得到的整数
输入样例
23.4输出样例
6参考答案
#include <iostream>
#include <string>
using namespace std;
const int MOD = 10007;
int main() {
string x;
cin >> x;
// 分割整数部分和小数部分
size_t dot = x.find('.');
string int_part_str;
char decimal_digit = '0'; // 小数部分第一位,默认0
if (dot == string::npos) {
int_part_str = x;
} else {
int_part_str = x.substr(0, dot);
if (dot + 1 < x.size()) {
decimal_digit = x[dot + 1];
}
}
// 转换整数部分为长整数
long long num = stoll(int_part_str);
// 四舍五入
if (decimal_digit >= '5') {
num++;
}
// 计算各位数字乘积
long long product = 1;
if (num == 0) { // 特殊情况:0的乘积为0
product = 0;
} else {
long long temp = num;
while (temp > 0) {
int digit = temp % 10;
product *= digit;
temp /= 10;
}
}
// 取模
cout << product % MOD << endl;
return 0;
}
上一题
下一题