c題:數論題目,討論n和k的大小關係,很明顯n==k時輸出1,n-k==1時是2,nk時推出公式2^(n-k)+(n-k-1)*2^(n-k-2),然後通過整數快速冪就可以了
對於1 <= k < n,我們可以等效為n個點排成一列,並取出其中的連續k個點。下面分兩種
情況考慮:
第一種情況,被選出的不包含端點,那麼有(n – k − 1)種情況完成上述操作,剩下未被圈的點
之間還有(n – k − 2)個位置,可以在每個位置斷開,所以共2^(n−k−2) ∗ (n−k−1)種方法。
第二種情況,即被選出的包含端點,那麼有2種情況,並且剩餘共(n – k − 1)個位置,所以共
2 ∗ 2^(n – k − 1)種方法。
總計2 ∗ 2^(n – k − 1) + 2^(n – k − 2) ∗ (n – k − 1) =2^(n-k)+(n-k-1)*2^(n-k-2)
#include#include#include#include#include#define mod 1000000007
using namespace std;
long long a,b;
long long power(long long a,long long b)
else
}return ans;
}int main()
e[n*2];
inline void add(int u,int v)
void addedge(int u,int v)
void dfs(int f,int u,int d)
for(i=head[u];i!=-1;i=e[i].next)
}void init()
int main()
sum+=ans[i];
}return sum;
}int main()
if(ans[0]) printf("%d",ans[0]);
for(int j=1; j<=len; j++)
printf("%d",ans[j]);
printf("\n");
}return 0;
}
2013多校第一場
c 找規律的題。主要是把題目裡的加法與去火柴的模型聯絡起來,然後利用排列組合的原理找公式。小結 我一開始一直在研究每個數和每個數出現的次數,以及題目給的f n 2 n 1 有啥關係,最後也沒研究個啥結論,看題解才知道的。include include include include include ...
2013第一場多校
多校第一場 1011 1 將每個數對應的4種情況求出來,並儲存每個數對應的狀態。2 問題轉化為 共有16種卡牌,每種卡牌可以選ai個,選了某種卡牌將得到bi的權值。將所有選定的bi進行 運算,若4位中的某一位為0,則需要額外的花費。3 直接進行2 16的列舉,表示某種物品選還是不選,每個物品至少選乙...
2020多校第一場1005
利用斐波拉契數列的通項公式。先利用二次剩餘和逆元得出三個常數。將式子多項式展開,發現等比數列的規律。遍歷k,等比求和,用逆元求組合數。include include include using namespace std typedef long long ll const int n 100005...