閱讀63 返回首頁    go 阿裏雲 go 技術社區[雲棲]


階乘之和

階乘之和

時間限製:3000 ms  |  內存限製:65535 KB
難度:3
描述

給你一個非負數整數n,判斷n是不是一些數(這些數不允許重複使用,且為正數)的階乘之和,如9=1!+2!+3!,如果是,則輸出Yes,否則輸出No;

輸入
第一行有一個整數0<m<100,表示有m組測試數據;
每組測試數據有一個正整數n<1000000;
輸出
如果符合條件,輸出Yes,否則輸出No;
樣例輸入
2910
樣例輸出
YesNo
采用貪心算法,先取最大的,滿足條件就更新n的值,如果最後n能變為0,那麼就找到了

查看代碼---運行號:252522----結果:Accepted

運行時間:2012-10-06 07:49:36  |  運行人:huangyibiao
01.#include <iostream>
02.#include <cstdio>
03.using namespace std;
04. 
05.int main()
06.{
07.//采用打表法
08.long  mul[9] = {1,2,6,24,120,720,5040,40320,362880};
09.int t;
10.cin >> t;
11. 
12.while (t--)
13.{
14.long n;
15.scanf("%ld", &n);
16. 
17.bool flag = false;
18.for (int i = 8; i >= 0; i--)
19.{
20.if (n >= mul[i] && n > 0)
21.n -= mul[i];
22.if (0 == n)
23.flag = true;
24.}
25.if (flag)
26.cout << "Yes\n";
27.else
28.cout << "No\n";
29.}
30.return 0;
31.}

最後更新:2017-04-02 15:14:54

  上一篇:go 國王的魔鏡
  下一篇:go Facebook推薦使用Opera取代Chrome