题目描述
小军刚刚学习了四舍五入的方法,于是结合以前学习的乘法进行了一些练习, 自己的计算能力得到很大提升。希望你帮他验证一些计算结果是否正确。在一次练习中,小军的做法是这样的:对一个大于 00 的实数,先将这个实数四舍五入取整,然后计算取整后每位数字的乘积,最后将乘积对 1000710007 取模。
输入格式
输入一个大于 00 的实数。
输出格式
输出经过上述计算后的结果。
样例 #1
样例输入 #1
23.4
样例输出 #1
6
提示
输入数据的长度(包括小数点)在 100100 位以内。
代码如下:
#include <bits/stdc++.h>
using namespace std;
string s;
long long ans=1,idx,a[1000];
int main()
{
cin>>s;
if(s.find(".")==string::npos)
{
for(int i=0;i<s.size();i++)
{
ans=ans*(s[i]-'0')%10007;
}
cout<<ans;
}
else
{
idx=s.find(".");
int temp=s[idx+1]-'0';
s.erase(idx,s.size()-idx);
reverse(s.begin(),s.end());
for(int i=0;i<s.size();i++) a[i]=s[i]-'0';
if(temp>4)
{
a[0]++;
for(int i=0;i<s.size();i++)
{
if(a[i]>9)
{
a[i+1]++;
a[i]-=10;
}
}
if(a[idx]!=0) idx++;
}
for(int i=0;i<idx;i++) ans=ans*a[i]%10007;
cout<<ans;
}
return 0;
}