poj1001在测试他给的数据结果一模一样,但总是wrong answer
来源:互联网 发布:pdf.js ajax 编辑:程序博客网 时间:2024/05/22 01:26
对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。
现在要你解决的问题是:对一个实数R( 0.0 < R < 99.999 ),要求写程序精确计算 R 的 n 次方(Rn),其中n 是整数并且 0 < n <= 25。
现在要你解决的问题是:对一个实数R( 0.0 < R < 99.999 ),要求写程序精确计算 R 的 n 次方(Rn),其中n 是整数并且 0 < n <= 25。
Input
T输入包括多组 R 和 n。 R 的值占第 1 到第 6 列,n 的值占第 8 和第 9 列。
Output
对于每组输入,要求输出一行,该行包含精确的 R 的 n 次方。输出需要去掉前导的 0 后不要的 0 。如果输出是整数,不要输出小数点。
Sample Input
95.123 120.4321 205.1234 156.7592 998.999 101.0100 12
Sample Output
548815620517731830194541.899025343415715973535967221869852721.0000000514855464107695612199451127676715483848176020072635120383542976301346240143992025569.92857370126648804114665499331870370751166629547672049395302429448126.76412102161816443020690903717327667290429072743629540498.1075960194566517745610440100011.126825030131969720661201下面是我写的代码,用的数组进行计算,先忽略小数点,按整数的形式进行运算,再在结果中计算出应该在哪里填进小数点,进而得到正确结果。
并且格式我也调整了,该tab的地方都改了。
#include <iostream>
using namespace std;int main(){
char R[6];
int n, point,j,Omul,Oadd;
for(int i=0;i<6;i++){
cin>>R[i];//输入值R;
}
cin>>n;
int a[500],b[500],c[500],d[500];
for(int i=0;i<500;i++){
a[i]=b[i]=c[i]=d[i]=0;
}
for(int i=0;i<6;i++){
if(R[i]=='.'){
point=i;//记录小数点的位置
break;
}
else{
point=-1;
}//当R为整数时;
}
j=1;
for(int i=5;i>point;i--){
a[500-j]=R[i]-48;
j++;
}
for(int i=point;i>0;i--){
a[500-j]=R[i-1]-48;
j++;
}
for(int i=0;i<500;i++){
d[i]=a[i];
}
Omul=Oadd=0;//表示进位;
for(int m=1;m<n;m++){
for(int j=0;j<500;j++){//控制乘数与被乘数相乘的位的位置;;
for(int i=0;i<500-j;i++){//第一个数的所有位数乘以第二个数的第j位;
if(j>0){
b[499-j+1]=0;
}
b[499-i-j]=a[499-i]*d[499-j]+Omul;
Omul=b[499-i-j]/10;
b[499-i-j]=b[499-i-j]%10;
}
for(int i=499;i>=0;i--){
c[i]=c[i]+b[i]+Oadd;
Oadd=c[i]/10;
c[i]=c[i]%10;
}
}
for(int i=0;i<500;i++){
a[i]=c[i];
c[i]=0;
}
}
int key=0;
if(point==-1){
for(int i=0;i<500;i++){
if(a[i]==0&&key==0){
}
else{
cout<<a[i];
key=1;
}
}
}
else{
key=0;
point=5-point;
point=point*n;
for(int i=0;i<500-point;i++){
if(a[i]==0&&key==0){
}
else{
cout<<a[i];
key=1;
}
}
cout<<".";
key=j=0;
for(int i=499;i>=500-point;i--){
if(a[i]==0&&key==0){
}
else{
j=i;
break;
}
}
for(int i=500-point;i<=j;i++){
cout<<a[i];
}
}
}
阅读全文
0 0
- poj1001在测试他给的数据结果一模一样,但总是wrong answer
- poj1001 Wrong Answer
- 关于UVa Online Judge提交总是Wrong answer的问题
- acm题为什么总是出现wrong answer。。。求大神救助
- zoj3191 Strange Clock(水题,但为何是wrong answer???)
- 2099_Frame Polygonal Line(测试正确但是wrong answer,求解)(对输入格式的控制)
- 在一些测试的时候,我总是被考“思维定势”的题目给难住
- 马虎的算式 有一次,老师出的题目是:36 x 495 = ?他却给抄成了:396 x 45 = ? 但结果却很戏剧性,他的答案竟然是对的!!
- wrong answer 原因
- poj 1035(Wrong Answer)
- ACT测试总是提示“未创建结果”的解决办法。
- 老公总是很晚打电话给别人,怎么查他的通话记录?嘿客QQ2274417041【百度认证】
- POJ1001幂次方的运算,大数据
- wrong answer of URAL 1802
- Wrong answer of URAL 1807
- Wrong Answer,Memory Limit Exceeded
- 如何把select选项给只读,让他不可选,但数据还是保存在下拉表中
- 几个常用数据容器的测试结果
- Object.prototype.toString.call(obj)检测对象类型?
- 日记:opencv3.0以后的版本变化
- 欢迎使用CSDN-markdown编辑器
- NVIDIA TK1 学习笔记(2):环境配置
- shadowsockets搭建
- poj1001在测试他给的数据结果一模一样,但总是wrong answer
- C++ STL 切分字符串
- CKEditor配置及使用
- 索引总结
- Python系列学习笔记(二)——基础语法规则
- 车牌识别系统概述
- eslint的使用 --save 和--save-dev
- Jacobi迭代法
- Token存储方式JWT