noip模擬賽8 魔術棋子

2022-05-01 17:15:16 字數 1492 閱讀 3975

描述

在乙個m*n的魔術棋盤中,每個格仔中均有乙個整數,當棋子走進這個格仔中,則此棋子上的數會被乘以此格仔中的數。乙個棋子從左上角走到右下角,只能向右或向下行動,請問此棋子走到右下角後,模(mod)k可以為幾?

如以下2*3棋盤:

344566

棋子初始數為1,開始從左上角進入棋盤,走到右下角,上圖中,最後棋子上的數可能為288,432或540。所以當k=5時,可求得最後的結果為:0,2,3。

輸入輸入第一行為三個數,分別為m,n,k (1≤m,n,k≤ 100)

以下m行,每行n個數,分別為此方陣中的數。

輸出輸出第一行為可能的結果個數 第二行為所有可能的結果(按公升序輸出)

輸入樣例 1 

2 3 5

3 4 4

5 6 6

輸出樣例 1

3

0 2 3

一開始用dfs 直接爆了!!!!,,

用二維vector來dp即可

#includeusing

namespace

std;

//input by bxd

#define rep(i,a,b) for(int i=(a);i<=(b);i++)

#define repp(i,a,b) for(int i=(a);i>=(b);i--)

#define ri(n) scanf("%d",&(n))

#define rii(n,m) scanf("%d%d",&n,&m)

#define riii(n,m,k) scanf("%d%d%d",&n,&m,&k)

#define rs(s) scanf("%s",s);

#define ll long long

#define pb push_back

#define fi first

#define rep(i,n) for(int i=0;i<(n);i++)

#define clr(a,v) memset(a,v,sizeof a)

/////////////////////////////////

//#define inf 0x3f3f3f3f

#define n 100+5vector

dp[n][n];

intmp[n][n];

intmain()

if(dp[i][j-1

].size())

rep(k,

0,dp[i][j-1].size()-1

)

}sort(dp[n][m].begin(),dp[n][m].end());

printf(

"%d\n

",dp[n][m].size());

rep(i,

0,dp[n][m].size()-1

)

return0;

}

noip模擬賽 密碼

表示沒看懂演算法3 問題描述 有壓迫,就有反抗。mored的寵物在法庭的幫助下終於反抗了。作為乙隻聰明的寵物,他打算把魔法使mored的魔法書盜去,奪取mored的魔法能力。但mored怎麼會讓自己的魔法書輕易地被盜取?mored在魔法書上設定了乙個密碼鎖,密碼鎖上有乙個問題。施以斯臥鋪魔法吧,你有...

NOIP模擬賽 老師

題目描述 一座有n層的教學樓裡有一些學生,第i 0 i n 層有studentsi個學生。你被給定了乙個數k,如果第i層有x個學生,那麼這一層需要 x k 個老師。你可以調整每個學生的樓層,但是每個學生至多只能調整一層,就是說第i層的學生只能去第i 1層 如果有的話 第i層 第i 1層 如果i 1 ...

NOIP模擬賽 分錢

題目描述 兩個人在街上撿到了一些錢,這些錢共有n張,他們等了很久也沒有等來失主,於是決定把錢平分。但錢可能無法平分。他們先把能夠平分的錢盡量先平分了,使得剩下不能平分的錢盡量少。這些不能平分的錢怎麼辦呢他?他們決定拿去賭場裡面賭一把。他們運氣太好了,那些不能平分的錢變成了雙倍,於是他們就把那個錢分了...