| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
请教一下, Presentation Error?是出了什么错.以前好像没碰到过!#include <stdio.h>
#include <memory.h>
char Result[125], Temp[125];
unsigned char Tab[10][10][2];
unsigned char s[6];
void MakeTab() //制造9 * 9乘法表
{
int i, j, aa;
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
aa = i * j;
Tab[i][j][0] = aa / 10;
Tab[i][j][1] = aa % 10;
}
}
}
void Caculate() //两个数组相乘机算
{
memset(Temp, 0, 125);
int i, j;
for (i = 1; i < 6; i ++)
{
for (j = 5; j < 125; j++)
{
if (0 != s[i] && 0 != Result[j])
{
Temp[i + j - 5] += Tab[s[i]][Result[j]][1];
Temp[i + j - 6] += Tab[s[i]][Result[j]][0];
}
}
}
for (i = 124; i > 0; i--)
{
Temp[i - 1] += Temp[i] / 10;
Temp[i] %= 10;
}
memcpy(Result, Temp, 125);
}
void OutPut() //将结果输出
{
int i, aa, bb;
for (i = 0; i < 125; i++)
{
if (0 != Result[i])
{
aa = i;
break;
}
}
for (i = 124; i > 0; i--)
{
if (0 != Result[i])
{
bb = i;
break;
}
}
if (-2 == Result[bb]) bb--;
for (i = aa; i <= bb; i ++)
{
printf("%c", Result[i] + 48);
}
}
int GetNumber() //将输入数组进行调整'.'放到最前面
{
int aa = 0, i;
for (i = 5; i >= 0 ; i --)
{
if ('.' == s[i])
{
aa = 5 - i;
}
else s[i] -= 48;
}
for (i = 5; i > 0 ; i --)
{
if ('.' == s[i])
{
s[i] = s[i - 1];
s[i - 1] = '.';
}
}
return aa;
}
void AdjustPos(int n)
{
int i;
int bb = 124 - n;
for (i = 1; i <= bb; i++)
{
Result[i - 1] = Result[i];
}
Result[bb] = '.' - 48;
}
int main()
{
int n, nDotPos, i;
MakeTab();
while (2 == scanf("%s%d", s, &n))
{
nDotPos = GetNumber();
memset(Result, 0, 125);
memcpy(Result + 120, s + 1, 5);
for (i = 1; i < n; i ++)
{
Caculate();
}
AdjustPos(nDotPos * n);
OutPut();
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator