解题思路:


为了写这道题,去看了高精度加减法,一直看到高精度乘法,还去博客看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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论