題目大意:定義點為零維元素,線為一維元素,面為二維元素,空間為三維元素,以此類推,求n維立方體中各維元素都有多少
令f[i][j]為i維立方體內j維元素的個數
考慮n維立方體中的i維元素,將n維立方體拓展至n+1維空間時(覺得抽象的可以想象平面擴充套件成立方體)
原先的i維元素增加了一倍,同時原先的i-1維元素變為了i維元素
故有f[i][j]=f[i-1][j]*2+f[i-1][j-1]
經過一系列的推導(我不會怎麼推,我是打表之後斜著找規律的),可以得到f[i][j]=2^(i-j)*c(i,j)
然後就有f[n][i]=f[n][i+1]*2*(i+1)/(n-i) 線性求出逆元 從後往前推即可
update:尼瑪誰這麼蛋疼加強了資料- -||| 加強後的資料出現了n>=p的情況(其實這個題本來是n對當前的值記錄p的次數 乘或除乙個數的時候對次數進行加減 異或的時候如果次數不為零則異或0
時間複雜度不對啊- - 不管了能卡過去
#include #include #include #include #define m 10001000
using namespace std;
long long inv[m],ans=1;
int n,p;
struct long_long
void operator *= (long long x)
void operator /= (long long x)
};void linear_shaker()
{ int i;
inv[1]=1;
for(i=2;i<=n&&i>n>>p;
linear_shaker();
for(i=n-1;~i;i--)
{temp*=static_cast(i+1<<1);
temp/=static_cast(n-i);
ans^=temp.pow?0:temp.left;
//cout<<(temp.pow?0:temp.left)<
專案38 2 打豆豆
任務和 設計乙個程式,能重複地在顯示下面的資訊 1.吃飯 2.睡覺 3.打豆豆 0.退出 請選擇 0 3 根據使用者輸入的選項,輸出一句提示性的話語 將來會對應實現某個功能 輸入0,則退出。檔名 main.c 完成日期 2015.10.15 問題描述 設計乙個程式,能重複地在顯示下面的資訊 1.吃飯...
382 鍊錶隨機節點
382.鍊錶隨機節點 給定乙個單鏈表,隨機選擇鍊錶的乙個節點,並返回相應的節點值。保證每個節點被選的概率一樣。高階 如果鍊錶十分大且長度未知,如何解決這個問題?你能否使用常數級空間複雜度實現?示例 初始化乙個單鏈表 1,2,3 listnode head new listnode 1 head.ne...
382 鍊錶隨機節點
原理參考 蓄水池抽樣 程式設計珠璣 讀書筆記 思路 以1 m的概率選擇第m個物件 思路 高階 如果鍊錶十分大且長度未知,如何解決這個問題?你能否使用常數級空間複雜度實現?class solution def init self,head listnode self.head head defgetr...