POJ 1001
来源:互联网 发布:阿里云服务器遭到攻击 编辑:程序博客网 时间:2024/05/16 09:57
请注意,这道题并不像 看上去那么容易,至少我觉得,还是有点复杂的,毕竟大整数的计算还是有很多细节要注意。
问题:计算一个在 0 ~ 100之内实数的n次方 (0<n<=25)
拓展一下,大整数的计算有几点要注意:
1.数据接收,存储(数组或者字符串)
2.计算结果位数
3.进位处理,借位处理
4.商、余数求法
这道题注意点:
1.小数点的处理,以及反序
2.进行n次乘法
3.输出格式要注意
#include <iostream>#include <string.h>using namespace std;int main(){ char d[10]; int n; while(cin>>d>>n){ int a[150] = {0},b[150] = {0},c[150] = {0}; int temp,flag,i,j,k,digit,s; int lend,lena,lenb,lenc,len; lend = strlen(d) - 1; for(i=0;d[i];i++) if(d[i] == '.') break; //求出小数点所在位数 digit = lend - i; for(j=i;d[j];j++) d[j] = d[j+1]; //小数点后面的数字前移 lend = lend - 1; for(i=0;i<=lend/2;i++){ temp = d[i]; d[i] = d[lend-i]; d[lend-i] = temp; } for(i=0;d[i];i++) a[i] = d[i] - 48; lena = lend; for(i=0;i<=lena;i++) b[i] = a[i]; lenb = lena; for(i=1;i<=n-1;i++){ for(j=0;j<=lenb;j++) for(k=0;k<=lena;k++){ c[j+k] += a[k]*b[j]; c[k+j+1] += c[j+k]/10; c[j+k] %= 10; } k--; j--; if(c[k+j+1]!=0) lenc = j+k+1; else lenc = j+k; for(j=0;j<=lenc;j++) b[j] = c[j]; lenb = lenc; memset(c,0,sizeof(c)); } digit = n * digit; len = lenb + 1 -digit; flag = 0; for(i=lenb-len;i>=0;i--) if(b[i]!=0){ flag = 1; break; } if(flag == 0){ for(i=lenb;i>=lenb-len+1;i--) cout<<b[i]; cout<<endl; continue; } if(len == 1 && b[lenb] == 0) cout<<"."; else{ for(i=lenb;i>=lenb-len+1;i--) cout<<b[i]; cout<<"."; } for(i=0;i<=lenb-len;i++) if(b[i]!=0){ temp = i; break; } for(i=lenb-len;i>=temp;i--) cout<<b[i]; cout<<endl; } return 0;}
0 0
- poj 1001
- poj 1001
- poj 1001
- POJ 1001
- POJ 1001
- poj 1001
- POJ 1001
- POJ 1001
- POJ 1001
- POJ-1001
- POJ 1001
- poj 1001
- POJ 1001
- POJ 1001
- POJ#1001
- poj-1001
- poj 1001
- POJ 1001
- 28335学习笔记:asm(" RPT #N || NOP")
- 获取心率带的心率值,介绍核心蓝牙:构建一个心率监视器。
- PostgresXC:从源码编译、安装、配置数据库集群以及用pg_basebackup配置Datanode的热备份
- Android Runnable 运行在那个线程
- iOS中的事件传递和响应者链条
- POJ 1001
- SiteMesh简单引入demo
- 自学微信二次开发(1)
- POJ 3522
- bzoj2154: Crash的数字表格
- HDU 1045.Fire Net【DFS暴力搜索】【3月15】
- RemoteViews(一):应用
- Python3缩进对逻辑的影响
- 明明的随机数