數學專項number theory LA 3262

2021-09-30 10:49:14 字數 684 閱讀 7858

題意就是找出n(1<=n<=65536)的乙個倍數,要求組成該數的不同數(0-9)最少,多解時,輸出最小的。學過離散的都知道,通過鴿巢原理,組成解的不同數最多為2,且每種組合最多經歷n個狀態,所以暴力列舉所有組合的複雜度為65536*100,完全可以接受。

這裡需要自己手寫乙個高精度類以比較大數,先列舉乙個數的情況,若不存在,再列舉二個數的情況即可。

#include #include #include #include using namespace std;

const int maxn=66000;

struct bign

bign(int l,int c)

if(y)

while(!q.empty())

return tmp;}}

int v2=(u*10+y)%n;

if(!vis[v2])

return tmp;}}

}return tmp;

}int main()

{ while(scanf("%d",&n) && n)

{bign ans;int flag=0;

for(int i=1;i<10;i++)

{memset(vis,0,sizeof(vis));

int s=0,p=i,c=0;do{

s=(s+p)%n;

//cout<

數學專項number theory LA 2955

一道關於梅森素數的題,這裡需要先得出乙個猜想,那就是只有梅森素數的一次冪的乘積的因子之和才能為2的次冪。這個猜想我不會證明,我只是測了下前100個素數,然後就覺得這個猜想應該是正確的,結果也確實如此。求數學帝證明 2 31內僅有8個梅森素數,只要將每個pi因式分解,直接剔除那些既不是梅森素數,也不是...

數學專項matrix UVa 11149

典型的倍增法的應用,這裡我用了遞迴的方式實現,這樣比較直觀,也比較好寫 主要是因為迭 的一直wa 注意輸入的時候需要取模。include include include using namespace std const int maxn 50 typedef int matrix maxn max...

樹狀陣列專項

poj 2352 此題一開始理解錯了乙個地方,而且一開始也沒很好的理解樹狀陣列,做了很長時間。其實此題的輸入是有規律的,即一直按照x,y遞增的規律。所以,判斷第i個輸入,只需要判斷 前i 1個元素中x的值,而不用考慮y,因為y一直是遞增輸入的。所以用乙個樹狀陣列來處理x即可。include incl...