|
|
15鱼币
这是题目,下面是我的代码,思路就是找到先找到比输入的数小的最大的阶乘,然后减去后继续重复该步骤,直至最后恰好为0输出“YES”或最后不可能减为0输出“NO”,但那个批改系统说我的代码结果有误,求大神解!- #include <stdio.h>
- #include <stdlib.h>
- int jiecheng(int i)
- {
- if (i==1) return 1;
- return i*jiecheng(i-1);
- }
- int main()
- {
- int n,n1;
- int i1=8;
- int m;
- scanf("%d",&n);
- n1=n;
- while (1)
- {
- for(int i=i1;i1>0;i--)
- {
- if (jiecheng(i)<=n1&&jiecheng(i+1)>n1)
- {
- m=jiecheng(i);
- i1 = i-1;
- break;
- }
- m=jiecheng(i);
- i1 = i-1;
- }
- if(i1==0&&n1-m!=0)
- {
- printf("NO");
- break;
- }
- else if(n1-m==0||n1-m==1)
- {
- printf("YES");
- break;
- }
- else if(n1-m<0)
- {
- printf("NO");
- break;
- }
- n1-=m;
- }
- return 0;
- }
复制代码
|
|