那年的梦想1001,努力中……
tell me why
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
char base[6];
int exp;
char pro[1000];
char temp[1000];
while(scanf("%s %d",base,&exp)!=EOF)
{
if(exp == 0)
{
printf("1\n");
continue;
}
int lenbase = strlen(base);
int i = 0;
int j = lenbase - 1;
int k = 0;
int pt = lenbase;
int left = 0;
int right = 0;
for(i=0; i<=j; i++)
{
if(base[i] == '.')
{
pt = i;
break;
}
}
for(i=0; i<pt; i++)
left = left + (base[i] - 48);
for(i=pt+1; i<lenbase; i++)
right = right + (base[i] - 48);
if((left == 0) && (right == 0))
{
printf("0\n");
continue;
}
if((left != 0) && (right == 0))
{
i = 0;
while(base[i] == '0')
i++;
while(i < pt)
{
base[k] = base[i];
i++;
k++;
}
pt = 0;
base[k] = '\0';
}
if((right != 0) && (left == 0))
{
i = pt + 1;
while(base[i] == '0')
i++;
while(base[j] == '0')
j--;
pt = (j - pt)*exp;
while(i<=j)
{
base[k] = base[i];
i++;
k++;
}
base[k] = '\0';
}
if((right !=0) && (left != 0))
{
i = 0;
while(base[i] == '0')
i++;
while(base[j] == '0')
j--;
pt = (j - pt)*exp;
while(i<=j)
{
if(base[i] == '.')
i++;
base[k] = base[i];
i++;
k++;
}
base[k] = '\0';
}
for(i=0; i<(int)((k+1)/2); i++)
{
j = base[i];
base[i] = base[k-1-i];
base[k-1-i] = j;
}
for(i=0; i<k; i++)
pro[i] = base[i];
pro[i] = '\0';
int sum = 0;
int mod = 0;
int car = 0;
int lenb = k-1;
int lena = k-1;
int count = 1;
while(count < exp)
{
int len = lena + lenb;
for(i=0; i<=len; i++)
{
j=0;
if(i > lena)
j = i - lena;
sum = 0;
while((i-j) >= 0 && j <= lenb)
{
sum = sum + (base[j]- 48)*(pro[i-j] - 48);
j++;
}
sum = sum + car;
mod = sum%10;
car = sum/10;
temp[i] = mod + 48;
}
lena = lena + lenb;
if(car > 0)
{
temp[i] = car + 48;
lena = lena +1;
}
car = 0;
for(i=0; i<=lena; i++)
pro[i] = temp[i];
pro[i] = '\0';
temp[0] = '\0';
count++;
}
if(pt == 0)
{
for(i=lena; i>=0; i--)
printf("%c", pro[i]);
printf("\n");
}
else if(lena >= pt)
{
for(i=lena; i>=pt; i--)
printf("%c", pro[i]);
printf("%c", '.');
for(i=pt-1; i>=0; i--)
printf("%c", pro[i]);
printf("\n");
}
else
{
int diff = pt - lena;
printf(".");
for(i=1; i<diff; i++)
printf("0");
for(i=lena; i>=0; i--)
printf("%c", pro[i]);
printf("\n");
}
}
return 0;
}
评论