Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

晒晒估计是最容易理解的代码......

Posted by 030802502 at 2011-09-08 16:13:07 on Problem 1001
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
	int n,i,j,digit,carry,sum,flag;
	char s[20];
	int a[1000];
	while(scanf("%s%d",s,&n) != EOF)
	{
		memset(a,0,sizeof(a));
		int len = strlen(s);
		int x = len;
		flag = 0;
		for (i = 0;i < len;i++)
		{
			if (s[i] == '.')
			{
				break;
			}
		}
		if (i == len)
		{
			len = 0;
		}
		else
			len = len - 1 - i;
		int d = atoi(s);
		for (j = i+1;j < x;j++)
		{
			d = d * 10 + s[j] - 48;
		}
		for (j = i+1;j < x;j++)//判断小数点后面是不是全为0,觉定是否输出.
		{
			if (s[j] != '0')
			{
				flag = 1;
				break;
			}
		}
		a[0] = 1; digit = 1; j = 0; 
		for (i = 0;i < n;i++)
		{
			carry = 0;
			for (j = 0;j < digit;j++)
			{
				sum = d * a[j] + carry;
				a[j] = sum % 10;
				carry = sum / 10;
			}
			while(carry)
			{
				a[digit++] = carry % 10;
				carry /= 10;
			}
		}
		for (j = 0;j < digit;j++)
		{
			if (a[j] != 0)
			{
				break;
			}
		}
		len = len * n;
		for (i = digit-1;i >= len;i--)
		{
			printf("%d",a[i]);
		}
		if(len != 0 && flag)
			printf(".");
		for (i = len-1;i >= j;i--)
		{
			printf("%d",a[i]);
		}
		printf("\n");
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator