文章

119

粉丝

68

获赞

90

访问

19.9k

头像
Sum of Factorials 题解:从大到小搜索
P1278 上海交通大学机试题
发布于2025年2月19日 14:45
阅读数 43

#include <bits/stdc++.h>
using namespace std;

int main(){
    int n;
    int fac[11];
    fac[0]=1;
    fac[1]=1;
    for(int i=2;i<=10;i++){
        fac[i]=fac[i-1]*i;
    }
    while(cin>>n){
        int i;
        for(i=0;i<11;i++){
            if(fac[i]>n){
                i--;break;
            }
        }
        int flag=0;
        while(i>=0){
            n-=fac[i--];
            if(n==0){
                flag=1;
                break;
            }
        }
        if(flag)cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }
}

本题还是有点意思的,我们需要生成n!数组,注意,10!足矣,数据大小只有100w,然后我们就可以从大到小去减了,注意,我们是不允许重复使用阶乘的

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发