poj1001_Exponentiation

时间:2022-06-14 02:56:14

这题真是超级大模拟。好繁琐,自己写的打数加法,乘法,写的比我大一时候写的要好很多,大一是借助C++里面的string来写的,这把只用了C,浇一次就ac了,挺开心的,不过写了2个小时啊。注意零的处理。大体思路就是先找出有多少位小数,要提前处理掉后面补充位置的零,然后把这个数转换成整数,做n次方,然后输出时候再查一下点的位置输出就好了。

 #include <stdio.h>
#include <string.h>
#define mmax(a,b) (a)>(b):(a):(b)
void bigadd(char a[],char b[],char res[]){
int la=strlen(a),lb=strlen(b);
int i,j,t,sign;
char tmp[];
char zero[]="";
if(la<lb){
strcpy(tmp,a);
strcpy(a,b);
strcpy(b,tmp);
la=strlen(a);
lb=strlen(b);
}
for(i=la-,j=lb-;i>=&&j>=;--i,--j){
a[i]=a[i]+b[j]-'';
}
strcpy(zero+,a);
strcpy(a,zero);
for(i=strlen(a)-;i>;--i){
a[i-]+=(a[i]-'')/;
a[i]=(a[i]-'')%+'';
}
for(i=;i<strlen(a);++i){
if(a[i]!='') break;
}
if(i==strlen(a)) strcpy(res,"");
else strcpy(res,a+i);
return ;
}
void bigmul_one(char a[],char b,char res[]){
char zero[]="";
strcpy(zero+,a);
strcpy(a,zero);
int ji[];
int i,n=b-'',l=strlen(a);
for(i=;i<l;++i){
ji[i]=(a[i]-'')*n;
}
ji[]=;
for(i=l-;i>;--i){
ji[i-]=ji[i]/+ji[i-];
ji[i]=ji[i]%;
}
a[]='';
for(i=l-;i>=;--i){
a[i]=''+ji[i];
}
for(i=;i<l;++i){
if(a[i]!='') break;
}
if(i==l) strcpy(res,"");
else strcpy(res,a+i);
} void bigmul(char a[],char b[],char res[]){
int la,lb=strlen(b);
char r[];
char tmp[]="";
char zero[]="";
char t1[],t2[];
char aaa[];
char haha;
int i,j,t,cnt;
strcpy(res,"");
for(j=;j<lb;++j){
haha=b[j];
strcpy(t1,a);
bigmul_one(t1,haha,t2);// t2 = res;
for(i=j+;i<lb;++i) strcat(t2,"");
bigadd(res,t2,aaa);
strcpy(res,aaa);
}
// printf("res=%s\n",res);
}
int main(){
char a[],b[],res[];
char tt[];
int n,i,l;
int cnt;
int success;
while(~scanf("%s%d",a,&n)){
success=;
strcpy(res,""); l=strlen(a); for(i=l-;i>=;--i){
if(a[i]!='') break;
}
if(i<=) i=;
a[i+]='\0'; l=strlen(a); cnt=;
for(i=;i<l;++i)
if(a[i]=='.') break;
strcpy(a+i,a+i+);
cnt=l--i;
if(cnt<) cnt=;
cnt=cnt*n;
for(i=;i<=n;++i){
strcpy(b,a);
bigmul(res,b,tt);
strcpy(res,tt);
}
l=strlen(res);
if(cnt>=l){
printf(".");
for(i=;i<cnt-l;++i) printf("");
printf("%s\n",res); }else{
for(i=;i<l;++i){
printf("%c",res[i]);
if(i+==l-cnt&&i+!=l) printf(".");
}
printf("\n");
} }
return ;
}

poj1001_Exponentiation的更多相关文章

    随机推荐

    1. 转载:Hadoop排序工具用法小结

      本文转载自Silhouette的文章,原文地址:http://www.dreamingfish123.info/?p=1102 Hadoop排序工具用法小结 发表于 2014 年 8 月 25 日 由 ...

    2. JavaScript prototype应用

      //JavaScript自定义功能 //1,去除字符串两端空格 String.prototype.trim = function() { var start, end; start = 0; end  ...

    3. bzoj 3171&colon; &lbrack;Tjoi2013&rsqb;循环格

      #include<cstdio> #include<iostream> #include<cstring> #define M 10000 #define inf ...

    4. svn提交时强制添加注释 (转)

      SVN提交时,如果没有注释,在查阅历史时,会非常不方便.因此我们需要有一个让程序员提交代码时,强制添加注释的规则.下面看看在SVN中怎么实现. 1. 推荐使用VisualSVN作为服务端(免费下载地址 ...

    5. 移动设备上的媒体查询 CSS media queries for mobile device

      CSS的媒体查询虽然在传统的互联网页面可能发挥的余地不是很大,但是自从苹果和安卓的风靡之后,移动平台上的web开发变得越来越流行了,同时CSS的媒体查询可谓派上了大用场了. 以下为翻译内容,原文来自这 ...

    6. C&num;里面比较时间大小三种方法

      1.比较时间大小的实验 string st1="12:13";string st2="14:14";DateTime dt1=Convert.ToDateTim ...

    7. 005-优化web请求一-gzip压缩、http缓存控制和缓存校验&lbrack;Pragma、Expires、Cache-Control、max-age、Last-Modified、用户刷新访问、避免过度304&rsqb;

      优化Web应用的典型技术:缓存控制头信息.Gzip.应用缓存.ETag.反应型技术[异步方法调用和WebSocket] 一.模板缓存 spring.thymeleaf.cache=true sprin ...

    8. Django的学习(一)————初入django

      一.基本指令 1.项目的建立: Django的项目建立,进入目录,打开cmd输入 django-admin startproject[项目名称],注意如果是在其他文件下把项目设计成资源文件. 2.Ap ...

    9. C&plus;&plus;进阶--const变量

      //############################################################# // const // - 编译时的限制:一个对象不能被修改 // in ...

    10. JSTL中&amp&semi;&num;60&semi;c&colon;set&amp&semi;&num;62&semi;标签的用法

      <c:set>标签有两种不同的属性设置:var和target. var“版本”用于设置作用域属性,target“版本”用于设置bean属性或Map值. 这两个版本都有两种形式:有标签体和没 ...