POJ 1001 Exponentiation
2013-11-29 14:15
459 查看
就是小数的高精度冥。
我是字符串输入。去掉前导0和后面的0;
例如 3.0100
用dian去记录小数点的位; 2
用字符串tmp去存去掉小数点后,倒过来的数; 103
然后用个tmp1去存 int型的 数; 301
然后计算输出,最后注意小数点的位置。
额。代码有点繁琐。不过AC了。
我是字符串输入。去掉前导0和后面的0;
例如 3.0100
用dian去记录小数点的位; 2
用字符串tmp去存去掉小数点后,倒过来的数; 103
然后用个tmp1去存 int型的 数; 301
然后计算输出,最后注意小数点的位置。
额。代码有点繁琐。不过AC了。
#include<algorithm> #include<cstdio> #include<cstring> #include<cmath> using namespace std; void powfff(char *str,int n) { char tmp[10001]; int i=0,k,j=0,dian=0,tmp1=0; bool flag=0; j=strlen(str); for(j--;str[j]=='0';j--);str[j+1]='\0'; for(i=j;str[i]!='.';i--)dian++; for(i=k=0;i<=j+1;i++) { if(!flag&&str[i]=='0'||str[i]=='.')continue; if(str[i]!='0')flag=1; if(flag)str[k++]=str[i]; } int c=0,s,len=strlen(str); for(i=k=0;i<len;i++) { tmp1=tmp1*10+str[i]-'0'; tmp[k++]=str[len-1-i]; }tmp[k]='\0'; dian=dian*n; while(n-->1) { for(i=0;i<len;i++) { s=c+(tmp[i]-'0')*tmp1; tmp[i]=s%10+'0'; c=s/10; } while(c>0) { tmp[i++]=c%10+'0'; c/=10; } len=i; } //tmp[len]='\0'; //puts(tmp);printf("%d %d %d\n",len,dian,tmp1); if(len<=dian) { printf("."); for(k=dian-len;k>0;k--) printf("0"); for(i=len-1;i>=0;i--) printf("%c",tmp[i]); printf("\n"); } else { dian=len-dian; for(i=len-1;i>=0;dian--) { if(dian==0)printf("."); else printf("%c",tmp[i--]); } printf("\n"); } } int main() { char str[21]; int n; while(~scanf("%s%d",str,&n)) { powfff(str,n); } }
相关文章推荐
- Android中监听ListView滑动到底部
- ssh、scp常见问题
- 基于Bootstrap+jQuery+Thinkphp+Mongodb实战开发社区交流网站平台
- awk && sed
- 使用Storyboard实现复杂界面
- 2013-11-29
- NistNet 网络损伤仪模拟工具
- typedef函数指针用法
- paramiko SSH 交互
- 开源性能测试工具 - Apache ab 介绍
- MyEclipse的一些配置
- Daily scrum[2013.11.28]
- C++.Experiment 4.Operator overloading(& date plus days)
- 复制powerpoint2007自定义形状粘贴到word2007里变成图片,怎么解决?
- nginx进程模型
- 通过chrome查看一个http请求的发起者。
- wxwidgets编译及环境配置
- linux 多线程 pthread_cond_wait(&cond,&mutex)理解
- ios程序编译链接参数 all_load 的 ld duplicate symbol _main 的 bug及修复
- 802.16, 802.1X,WPA,WEP,EAP,Hotspot 2.0