雇人做淘宝网站多少钱,网站建设就是学淘宝吗,重庆免费公司建网站,高端设计参考网站阶乘之和 时间限制#xff1a;3000 ms | 内存限制#xff1a;65535 KB难度#xff1a;3描述给你一个非负数整数n#xff0c;判断n是不是一些数#xff08;这些数不允许重复使用#xff0c;且为正数#xff09;的阶乘之和#xff0c;如91#xff01;2!3!#xff0c;… 阶乘之和 时间限制3000 ms | 内存限制65535 KB 难度3 描述 给你一个非负数整数n判断n是不是一些数这些数不允许重复使用且为正数的阶乘之和如912!3!如果是则输出Yes否则输出No 输入第一行有一个整数0m100,表示有m组测试数据 每组测试数据有一个正整数n1000000;输出如果符合条件输出Yes否则输出No;样例输入 2 9 10 样例输出 Yes No 方法一 #include stdio.h
#include string.h
int main()
{ int m; scanf(%d,m); int f[11]; memset(f,0,sizeof(f)); //初始化 f[1]1; for(int i2;i11;i) f[i]f[i-1]*i; while(m--){ int n; scanf(%d,n); int i; int aimn; int flag10; for(iflag;i0;i--)//从最大的开始减 { if(aimf[i]){ flagi-1; aimaim-f[i]; } } if(aim0) printf(Yes\n); else if(aim!0) printf(No\n);
} return 0;
} 方法二 #includestdio.h
int main()
{int m;scanf(%d,m);int k[9] {1,2,6,24,120,720,5040,40320,362880};while(m--){int n;scanf(%d,n);bool ffalse;for(int i8;i0;--i){if(nk[i]n0)n-k[i];if(n0)ftrue;}if(f)printf(Yes\n);elseprintf(No\n);}return 0;
}算出阶乘从不大于n的最大阶乘开始想减如果结果为0就是符合的。