测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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; }
上一题 下一题