解题思路:
为了写这道题,去看了高精度加减法,一直看到高精度乘法,还去博客看reserve函数和find函数的使用,最后在B站上看老师讲解才大概明白
注意事项:
参考代码:
#include<bits/stdc++.h>
using namespace std; //高精度乘以低精度
const int t=2e3+10;
int a[t]={0};
int main()
{
int n=0;
string s="";
cin>>n>>s;
reverse(s.begin(),s.end()); //反转字符串
int pos=s.find("."); //找到这个小数点的位置
s.erase(pos,1); //删去小数点
int len=s.size(); //记录它的字符长度
for(int i=0;i<len;i++) //将字符存入a数组中
{
a[i]=s[i]-'0';
}
for(int i=0;i<n;i++) //模拟pow()函数
{
for(int j=0;j<len;j++) //每一位 ×2
{
a[j]*=2;
}
for(int j=0;j<len;j++)
{
if(a[j]>=10)
{
a[j+1]++;
a[j]%=10;
}
if(a[len-1]>=10)
{
len++;
}
}
}
if(a[pos-1]>=5) //通过判断小数点后一位
//进行四舍五入
{
a[pos]++; //进一
if(a[pos]>=10) //如果已经为9,需要再进一
{
a[pos+1]++;
a[pos]=0;
}
}
for(int i=len-1;i>=pos;i--)
{
cout<<a[i];
}
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复