「東信杯」廣西大學第一屆程式設計競賽(同步賽)

2021-09-01 20:47:07 字數 1185 閱讀 7102

不吉利的數

時間限制:c/c++ 2秒,其他語言4秒

空間限制:c/c++ 131072k,其他語言262144k

64bit io format: %lld

在數學中,某個序列的子串行是從最初序列通過去除某些元素但不破壞餘下元素的相對位置(在前或在後)而形成的新序列。

假設有一條數列

注意:子數列的次序必須和主數列的次序一樣。

例如:引用自 子串行——維基百科

在中國文化裡,4和「死」諧音,7和「氣」諧音,都是不吉利的含義。現在我們定義所有只由4和7組成的數字為不吉利的數字,例如4、47、74、44、7774等。

現在有乙個數列array, 元素個數為 n ,給定乙個數 m ,你可以在array任意選取 m 個數字的子串行,對於任何乙個子串行只要有任意位置下標不同則視為不同的子串行。

例如選擇下標為

現在要求選取的數字中同乙個不吉利的數最多出現一次,請問有多少種選法?

答案可能很大,請輸出答案對

第一行為兩個整數:n和m

接下來一行為 n 個整數,其中第i個表示array[i]

所有資料滿足:

在一行內輸出乙個整數表示答案
示例1複製

4 3

2 44 44 477

複製

2
所有選擇方法中選擇下標為(1,2,4)和(1,3,4)的子串行滿足要求
思路:

找到重複的含4和7且不含其他數字的數,然後只保留乙個這個數,然後用組合數求出有多少種方法,乘以所有有過重複的數,然後用快速冪,和除法取模去算出最後的答案。

**:

#include using namespace std;

typedef long long ll;

const int mod = 1e9+7;

const int maxn=200000+10;

ll a[maxn];

mapmp;

ll ksm(ll a,ll b)

b/=2;

a=a*a%mod;

}return res;

}int main()

cout<

}

江西財經大學第一屆程式設計競賽 A

擠需體驗五番鐘,裡造會挨上這款遊戲 怎麼可能嘛!當我是傻子嗎!於是我就去玩了,然後我果然成功證明,我是正確的,這破遊戲,真的很無聊.有多無聊呢,和這道題一樣.問題有兩種情況 0 給出兩個100以內的正整數做加法 1 給出乙個字串問有多少個字元 字串長度不超過100000 第一行輸入乙個整數t 表示樣...

江西財經大學第一屆程式設計競賽 I

小p和小q是好朋友,今天他們一起玩乙個有趣的遊戲。他們的初始積分都為1,贏的人可以將自己的分數乘以 k的平方 而輸的人也能乘以k。他們玩的太開心了,以至於忘了自己玩了多久,甚至 k 是多少和遊戲進行的回合數 n 都忘了。現在給出他們倆最終的積分a,b,請問是否存在正整數k n滿足這樣的積分,判斷他們...

江西財經大學第一屆程式設計競賽 F

對於方程 2018 x 4 21 x 5 x 3 5 x 2 14 y,告訴你y的值,你能找出方程在0 100之間的解嗎?第一行輸入乙個正整數t 表示樣例個數 接下來t組樣例 每組樣例一行,輸入乙個實數y一行輸出乙個樣例對應的結果,輸出方程在0 100之間的解,保留小數點後4位小數 如果不存在,輸出...