POJ题目地址
#include<iostream>
#define EQ 0
using namespace std;
int i_Factorial(int n)
{
int temp=1;
int m=1;
while(m<=n)
{
temp=temp*m;
m++;
}
return temp;
}
int main()
{
int i,n,a[12];
for(i=0;i<12;i++)
a[i]=i_Factorial(i);
while(1)
{
cin>>n;
if(n==0)
{
cout<<"NO"<<endl;
continue;
}
else if(n<0)
{
return 0;
}
i=11;
while(i>=0 && n>0)
{
if(n>=a[i]) n=n-a[i];
i--;
}
if(n==0)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}//while
return 0;
}
没事编编程。第一次做哦~继续努力。2012.11.06
2013.4.18
#include <stdio.h> int Factorial(unsigned int n) { if (n == 0) { return 1; } else { return (n * Factorial(n-1)); } } int main() { int i,n,nMax,nTmp; while ( scanf("%d",&n) && (n >= 0)) { for (i = 1;; i++) { if (Factorial(i) > n) { nMax = i-1; break; } } while (1) { nTmp = n - Factorial(nMax); if (nTmp < 0) { nMax --; if (nMax < 0) { printf("NO\n"); break; } } else if(nTmp > 0) { n = nTmp; nMax --; if (nMax < 0) { printf("NO\n"); break; } } else { printf("YES\n"); break; } } } return 0; }