6 条题解

  • 2
    @ 2025-11-7 13:16:14
    #include <iostream>
    using namespace std;
    int main() {
    	int t;
    	cin >> t;
    	while (t--) {
    		int n;
    		cin >> n;
    		int sum = 0;
    		int flag = 0;
    		int m;
    		for (int i = 10; i >= 1; i--) {
    			m = 1;
    			for (int j = 1; j <= i; j++) {
    				m *= j;
    			}
    			if (m > n) continue;
    			sum += m;
    			if (sum == n) {
    				flag = 1;
    				break;
    			} else if (sum > n) {
    				sum -= m;
    			}
    		}
    		if (flag == 1) {
    			cout << "Yes" << endl;
    		} else {
    			cout << "No" << endl;
    		}
    	}
    	return 0;
    }
    
    • @ 2025-11-7 13:21:03

      题目中有限制n范围,从高阶层往下遍历,阶层和大于n返回,重新向下寻找,和等于一标记flag等于1

信息

ID
157
时间
3000ms
内存
128MiB
难度
8
标签
(无)
递交数
1348
已通过
231
上传者