每次操作可以將集合中的乙個數字分解為它的任意兩個非1的因數, 集合中的數字個數+1。
因為 質因數 是無法再被分解的,所以最後集合中的數全為 n 的質因數。因此只需要看題目給定的 n 有多少個質因數。假設 n 有 p 個質因數,那麼這場遊戲將進行 p-1 次操作(每次操作後集合中的數字個數+1),如果 p-1 為奇數那麼後手便無法再進行操作,如果 p-1 為偶數則先手再無法進行操作。
注意:n==1 的情況要特殊處理一下.
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define mem(a, b) memset(a, b, sizeof(a))
#define pi acos(-1)
#define debug(a) cout << (a) << endl
typedef long long ll;
int dir8[8]
[2]=
, , , , , , , };
int dir4[4]
[2]=
;const int inf = 0x3f3f3f3fll;
const long long llf = 0x3f3f3f3f3f3f3f3fll;
const int maxn = 95718 + 15;
const int mod = 20010905;
int s[maxn]
;int main(
) for(int i=2;i<=n;i++)
} if(cnt%2==0) //判奇偶
printf(
"johnson\n");
else printf(
"nancy\n");
return 0;
}
牛客演算法周周練6 C Game C
時間限制 c c 1秒,其他語言2秒 空間限制 c c 131072k,其他語言262144k 64bit io format lld 第一行 乙個整數n。資料滿足 1 n 95718共一行 乙個字串,表示最後誰 johnson或者nancy 無法進行操作。示例1 johnson 因為每一次操作都會...
牛客演算法周周練6 青蛙過河
其實這就是一道數學規律題,我們不難發現。當只有荷葉的時候,我們最多只能由 m 1 個青蛙可以過河 m 個青蛙先分別排類在荷葉上,然後再最後乙個青蛙跳到目標石墩。當存在乙個石墩時,我們可以先讓 m 1 個青蛙跳到上面,去,然後我們還能再荷葉上放 m 個青蛙,最後在目標點上能放乙隻青蛙,這裡就得到 m ...
牛客演算法周周練2
a 題意 求乙個數的順序和逆序之和。題解 其實就是個閹割版的高精度加法嘛。其實逆序數忽略前導零這個條件是沒有用的,因為順序數不可能有前導零,自然結果也不會有,然後注意下首位進製不取餘。include using namespace std int a 10 b 10 intmain for k j ...