HDU 1063 (实数的乘法)

来源:互联网 发布:直通车钻展淘宝客 编辑:程序博客网 时间:2024/05/29 17:06

点击打开链接


R^n    0<=R<=99.9

注意当没有小数的情况


#include"stdio.h"#include"string.h"#define N 1001int A[N];void mul(int a[],int n){int i;int carry=0;for(i=1;i<=a[0];i++){a[i]=a[i]*n+carry;carry=a[i]/10;a[i]%=10;}while(carry){a[i++]=carry%10;carry/=10;}a[0]=i-1;}void print(int m){int i,j;if(A[0]>m)//ÓÐÕûÊý{for(j=0,i=A[0];j<A[0]-m;i--,j++)printf("%d",A[i]);for(j=1;A[j]==0;j++)A[j]=-1;if(A[i]==-1||i==0)return ;printf(".");for(;A[i]!=-1&&i>=1;i--)printf("%d",A[i]);}else{printf(".");for(i=0;i<m-A[0];i++)printf("0");for(j=1;A[j]==0;j++)A[j]=-1;for(i=A[0];i>=1&&A[i]!=-1;i--)printf("%d",A[i]);}}int main(){int n;int m;int i,t;char s[10];while(scanf("%s%d",s,&n)!=-1){t=0;memset(A,0,sizeof(A));m=5;for(i=0;s[i];i++){if(s[i]=='.')m=i;else t=t*10+s[i]-'0';}A[0]=A[1]=1;m=(5-m)*n;while(n--)mul(A,t);print(m);printf("\n");}return 0;}


原创粉丝点击