码迷,mamicode.com
首页 > 编程语言 > 详细

sdut oj 2059 简单 n! (一个大数与一个小数相乘的算法 、一个大数与一个小数的除法算法 【模板】 )

时间:2015-01-18 13:07:28      阅读:355      评论:0      收藏:0      [点我收藏+]

标签:

简单n!

 

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

给定一个数n(0 <= n <= 150), 求0到n中所有数的阶乘。

输入

题目有多组数据,处理到文件结尾。输入一个数n。

输出

输出阶乘,形式如:4! = 24.每组数据输出后跟一个空行。

示例输入

1
4

示例输出

0! = 1
1! = 1

0! = 1
1! = 1
2! = 2
3! = 6
4! = 24

提示

 代码:
       
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <cctype>
#include <string>

using namespace std;


//实现1->150的阶乘

int main()
{
    int r[601];
	int i, j, k, c;
	int t;
    int n;
	while(scanf("%d", &n)!=EOF)
	{
		if(n==0)
		{
			printf("0! = 1\n\n");
			continue;
		}
		if(n==1)
		{
			printf("0! = 1\n1! = 1\n\n");
			continue;
		}

        printf("0! = 1\n1! = 1\n");
		for(i=0; i<=600; i++)
		{
		    r[i]=0;
		}
        
	    r[0]=j=1;
	    for(i=2; i<=n; i++)
		{
		    for(k=0; k<j; k++)
			{
			    r[k]=r[k]*i;
			}
		    for(k=c=0; k<j; k++ )
			{
			    t=r[k]+c;
			    r[k]=t%10;
			    c=t/10;
			}
		    while(c)
			{
			    r[j]=c%10;
			    c=c/10;
			    j++;
			} //处理高位的那部分的进位问题
		//printf("%d---\n", j) ;
            printf("%d! = ", i );
		    for(k=j-1; k>=0; k--)
			{
			    printf("%d", r[k] );
			}
		    printf("\n");
		}
		printf("\n");
	}
   
	return 0;
}
 
除法的没涉及!有待添加


/**************************************
	Problem id	: SDUT OJ 2059 
	Result		: Accepted 
	Take Memory	: 496K 
	Take Time	: 10MS 
	Submit Time	: 2015-01-11 08:22:42  
**************************************/

 

sdut oj 2059 简单 n! (一个大数与一个小数相乘的算法 、一个大数与一个小数的除法算法 【模板】 )

标签:

原文地址:http://www.cnblogs.com/yspworld/p/4231652.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!