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]>=
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/29 23:08:35
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]>=
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
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]>=
你的算法是有问题的!
明显的错误就是数组越界!
我用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