題目描述:
在進行某些桌遊,例如 uno 或者麻將的時候,常常會需要隨機決定從誰開始。骰子是一種好方案。普通的骰子有六個面,分別是一點、二點、三點、四點、五點、六點,六面向上的概率相同。由於骰子只能產生六種情況,而實際桌遊時,卻常常有三到四人,所以,我們在擲骰子時,常常採用兩顆骰子,這個「隨機的選擇」就由骰子向上點數之和直接決定。
我們採用這麼一種方案,將向上點數之和對 p
(人數)取模,模出來的 0,1
,…,p
−1恰好對應 p
所以唐納德先生發明了一種假骰子,這種假骰子也有六個面,但六個面的點數就不再是 1,2
,3,4
,5,6
,而是 a1,
a2,a
3,a4
,a5,
a6。如果他精心選擇了這六個面的點數,他仍然可以強制公平。
先給出 p
和兩枚假骰子六個面的點數,問是否公平。
輸入具有如下形式:pa
1a2a
3a4a
5a6b
1b2b
3b4b
5b6
第一行乙個整數 p
(3≤p
≤4)。
第二行六個整數,用空格隔開,表示第一枚骰子的點數 a1,
a2,a
3,a4
,a5,
a6(1≤a
i≤6 )。
第三行六個整數,用空格隔開,表示第二枚骰子的點數 b1,
b2,b
3,b4
,b5,
b6(1≤b
i≤6 )。
如果公平輸出yes
,否則輸出no
。
input
4output1 2 3 4 5 6
1 2 3 4 5 6
noinput
3output1 2 3 4 5 6
6 5 4 3 2 1
yes解題思路:
一開始有好長段時間沒讀懂題意, 冒險交了一把果不其然wa, 然後冷靜下來舉了一下樣例。 這道題其實就是看兩個骰子的任兩面和mod人數出來的數字是否對每個人都是公平的, 比如有三個人的時候是否mod出來的0, 1 ,2 個數是否是n0 == n1 == n2, 資料量小暴力直接過。
**:#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
/*tools:
*ios::sync_with_stdio(false);
*freopen("input.txt", "r", stdin);
*/typedef long long ll;
typedef unsigned long long ull;
const int dir[9][2] = ;
const ll ll_inf = 0x7fffffff;
const int inf = 0x3f3f3f;
const int mod = 1000000;
const int max = (int) 2e4 + 7;
int n;
int a[10], b[10], num[10];
int main()
for (int i = 0; i < 6; ++i)
for (int i = 0; i < 6; ++i)
}if (n == 4) else
} else if (n == 3) else
}if (!f) printf("yes\n");
else printf("no\n");
return 0;
}
EOJ 3452 唐納德先生和假骰子 暴力
題目鏈結 題目意思 給你乙個數字p,代表人數,接著給出你兩個骰子的六個面的數值,現在要你將骰子向上的點數和對人數取餘,得到的餘數分別為0到p 1,現在問你遊戲是否公平。解題思路 數值很小我們就用暴力求出兩個骰子的六個面的點數和,然後對p取餘,看得到的餘數的個數是否一樣,一樣代表遊戲公平,否則遊戲不公...
EOJ 莫干山奇遇
出題人當然是希望出的題目有關oxx,於是想方設法給題目配上一些有關oxx的背景故事,使得它看起來不那麼無趣。但有的時候卻無法引入合適的小姐姐,使得oxx顯得非常可憐。所以出題人刪除了故事,只留下乙個枯燥乏味的數學問題。故事已刪除 給乙個長度為n的序列a1,a2,an,求乙個長度為m的序列b1,b2,...
OJ Problem 3452 C 判斷回文字串
使用c 編寫乙個靜態方法。該方法能夠判斷字串是否是 回文 即順讀和逆讀相同的字串 乙個字串 如果是回文字串,則輸出 yes 否則輸出 no abcdcabno 1 用string類的tocahrarray 方法,將字串轉換為字元陣列。2 使用stringbuilder類儲存逆序後的字串。using ...