(紀中)2155 num 數學

2021-10-02 15:50:39 字數 1909 閱讀 1917

(file io): input:num.in output:num.out

時間限制: 1000 ms 空間限制: 262144 kb 具體限制

goto problemset

題目描述

k ckc

kc邀請他的兩個小弟k

kk和c

cc玩起了數字遊戲。遊戲是k

kk和c

cc輪流操作進行的,k

kk為先手。kckc

kc會先給定乙個數字q

qq,每次操作玩家必須寫出當前數字的乙個因數來代替當前數字,但是這個因數不能是1

11和它本身。例如當前數字為6

66,那麼可以用2,3

2,32,

3來代替,但是1

11和6

66就不行。現在規定第乙個沒有數字可以寫出的玩家為勝者。k

kk在已知q

qq的情況,想知道自己作為先手能不能勝利,若能勝利,那麼第一次寫出的可以制勝的最小數字是多少呢?整個遊戲過程我們認為k

kk和c

cc用的都是最優策略。

輸入

只包括乙個正整數qqq

輸出

第一行是1

11或2,1

2,12,

1表示k能勝利,2

22表示c

cc能勝利。

若k能勝利,則在第二行輸出第一次寫出的可以制勝的最小數字,若是第一次就無法寫出數字,則認為第一次寫出的可以制勝的最小數字為000。

說明:若c

cc能勝利,不用輸出第二行,輸出2

22即可。

樣例輸入

6樣例輸出

2資料範圍限制

對於30

30%30

的資料,q

<=50

q<=50

q<=5

0; 對於100

100%

100的資料,q

<=1

01

3q<=10^13

q<=1

013。

解題思路

思路:數學

求出q

qq的質因數的個數

這道題分為三種情況:

1:n

nn為質數,k

kk贏,第一次寫出0

00。(第一次就沒有可以輸出的)。

2:n

nn為兩個質數的乘積(兩個質數可以相等),c

cc贏。

3:n

nn很複雜,則輸出n

nn最小的兩個質因數(可以相等,即n=k

∗t∗t

n=k*t*t

n=k∗t∗

t, t

tt為此質因數)的積。

**

#include

#include

#include

#include

#include

#include

using namespace std;

long long q,a[

100000

],k,n;

int main()

}if(q!=1)

a[++k]

=q;if

(k==1)

printf

("1\n0\n");

else

if(k==2)

printf

("2\n");

else

return0;

}

餐桌 紀中 1237 水 數學

description 你家剛買了一套新房,想邀請朋友回來慶祝,所以需要乙個很大的舉行餐桌,餐桌能容納的人數等於餐桌的周長,你想買乙個能容納最多人的餐桌,餐桌的邊必須跟房間的邊平行。給你的房間的設計,計算最多能邀請的客人數。input 第一行包含兩個整數r和c 1 r,c 2000 表示房子的長和寬...

電影票 紀中 3057 數學

笨笨當了很久的道路排程員,笨笨也開始想體驗生活,從生活中發現數學問題,鍛鍊自己思維。最近 變形金剛3 哈利波特7 同步放映,明顯是決戰雌雄,已知王府井中一共有n人買了 變形金剛3 的票,m人買了 哈利波特7 的票,並且n m,並且電影院中現在只有兩種票,每次只有乙個人買,共有n m次 這n m次組成...

電影票 紀中3057 組合數學

笨笨當了很久的道路排程員,笨笨也開始想體驗生活,從生活中發現數學問題,鍛鍊自己思維。最近 變形金剛3 哈利波特7 同步放映,明顯是決戰雌雄,已知王府井中一共有n人買了 變形金剛3 的票,m人買了 哈利波特7 的票,並且n m,並且電影院中現在只有兩種票,每次只有乙個人買,共有n m次 這n m次組成...