Given an integer N(0 ≤ N ≤ 1000),your task is to calculate

问题描述:

Given an integer N(0 ≤ N ≤ 1000),your task is to calculate
#include
#include
int a[1000][1000];
int main()
{
int i,j,n,f=0;
memset(a,0,sizeof(a));
a[0][1000]=0;
a[1][1000]=1;
for(i=2;i=0;j--)
a[i][j]=a[i-1][j]*i;
for(j=1000;j>=0;j--)
if(a[i][j]>=1000)
{
a[i][j-1]+=a[i][j]/1000;
a[i][j]%=1000;
}
}
while(scanf("%d",&n)!=EOF)
{
f=0;
for(j=0;j
1个回答 分类:综合 2014-10-12

问题解答:

我来补答
你的算法是有问题的!
明显的错误就是数组越界!
我用java给你写了一个,你做下参考:
public class TestPlus {
public TestPlus() {
// TODO Auto-generated constructor stub
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int task = 100;//要计算的目标数
calcN(task);
}
/**
* 计算task的阶乘
* @param task
*/
private static long calcN(int task) {
// TODO Auto-generated method stub
long result = 0;
switch(task){
case 0:
result = 1;break;
default :
result = calc(task);break;
}
System.out.println("==="+result);
return result;
}
private static long calc(int task) {
// TODO Auto-generated method stub
long result = 1;
for(int i=1;i
 
 
展开全文阅读
剩余:2000
上一页:dc2inr3qec3r2
下一页:这样怎么写