# emu in blogjava

BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
 171 随笔 :: 103 文章 :: 1052 评论 :: 2 Trackbacks

### Problem Statement

In the factorial number system the value of the first digit (from the right) is 1!, the value of the second digit is 2!, ..., and the value of the n-th digit is n!. This means that any decimal number d can be written in this system as: anan-1...a2a1, where

d = an * n! + an-1 * (n-1)! + ... + a2 * 2! + a1 * 1! and 0 <= ai <= i for all i.

Given an int num in decimal, return its representation in the factorial number system.

### Definition

 Class: FactorialSystem Method: convert Parameters: int Returns: int Method signature: int convert(int num) (be sure your method is public)

### Notes

- n! = 1 * 2 * ... * n

### Constraints

- num will be between 1 and 3628799 (10!-1), inclusive.

### Examples

0)

 `1`
`Returns: 1`
1)

 `24`
`Returns: 1000`
 24 = 4!
2)

 `153`
`Returns: 11111`
 153 = 1! + 2! + 3! + 4! + 5!.
3)

 `133`
`Returns: 10201`
4)

 `3628799`
`Returns: 987654321`
 Largest possible input.

This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved.

posted on 2005-12-23 10:26 emu 阅读(1169) 评论(4)  编辑  收藏 所属分类: google编程大赛模拟题及入围赛真题

### 评论

# re: FactorialSystem (code jam china round2 300分真题) 2006-07-28 08:29 peng he
#include<stdio.h>
void main()
{int i, a;
scanf("%d",&a);
for(i=2;a/i!=0;i++)
{printf("%d",a%i);
a=a/i;

}

}  回复  更多评论

# re: FactorialSystem (code jam china round2 300分真题) 2007-06-09 15:39 匿名
@peng he

# re: FactorialSystem (code jam china round2 300分真题)[未登录] 2007-09-08 22:44 a
package factorial;
public class Factorial {

public static void main(String[] args) {
StringBuffer sb=new StringBuffer();
int m=445;
int z=1;
int fZ=z;
while(m/fZ>0)
{
z++;
fZ=al.getLast();

}
int n=z-1;
for(int i=n;i>=1;i--)
{

int temp=m/al.get(i-1);
m-=temp*al.get(i-1);
sb.append(temp);
}
System.out.println(sb.toString());

}

}
回复  更多评论

# re: FactorialSystem (code jam china round2 300分真题) 2008-10-12 21:45 zgqchina
#include<iostream>
using namespace std;

long factrial(int n) //求阶乘,n>0
{
if(n==1) return 1;
else
return n*factrial(n-1);
}

int k=0,a[9]; //全局变量 K用来计数，数组用来存放数列

void convert(double num) //转换成数列
{
int n=9;
while((num>0)&&(n>=1))
{
int m=factrial(n);
if(num<m)
a[k]=0;
else
{
for(int p=n;p>=1;p--)
if(num>=p*m)
{
a[k]=p;
break;
}
num=num-p*m;
}
n--;
k++;
}
}

void main()
{
cout<<"please input a number(num will be between 1 and 3628799) :"<<endl;
double temp;
cin>>temp;
cout<<"now the result is :"<<endl;
convert(temp);
int i=0;
while(a[i]==0) i++;
for(i;i<9;i++)
cout<<a[i]<<" ";
}  回复  更多评论

 只有注册用户登录后才能发表评论。 网站导航: 相关文章: