您的位置:首页 > 其它

pku 1423 阶乘 Big Number 解题报告

2009-02-22 13:44 459 查看
一、题目:Big Number

二、题意:求数a的阶乘的位数。

三、解决办法:

此题的解决办法不难,但却有一种很好的算法思想在里面,故我需要对此做出自己的总结!

此题算属于高精度问题!我发现凡是遇到高精度的问题,其中最重要的思想在于将数值统统放到大数组上,还有一种算法思想,同时也是此题的的解法!即在计算的过程中,不断的对数值进行记录,而且还不断对其数值进行缩小!

四、源代码:

#include "stdio.h"

int main()
{
freopen("1.txt", "r", stdin);
int t;
int n;
int i;
int digit;
double num;

if (scanf("%d",&t))
{
while (t--)
{
scanf("%d",&n);
digit = 1;
num = 1;
for (i = 2; i <= n; i++)
{
num *= i;
if (num < 10)
{
continue;
}
if (num < 100)
{
digit += 1;
num /= 10;
continue;
}
if (num < 1000)
{
digit += 2;
num /= 100;
continue;
}
if (num < 10000)
{
digit += 3;
num /= 1000;
continue;
}
if (num < 100000)
{
digit += 4;
num /= 10000;
continue;
}
if (num < 1000000)
{
digit += 5;
num /= 100000;
continue;
}
if (num < 10000000)
{
digit += 6;
num /= 1000000;
continue;
}
if (num < 100000000)
{
digit += 7;
num /= 10000000;
continue;
}
}
printf("%d/n",digit);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: