ACdream1139 Sum 推公式 逆元求解

2021-12-29 21:12:29 字數 1569 閱讀 8543

題意:給定乙個由0~9組成的矩陣,我們求行相鄰的組成的數與列相鄰的組成的數的和。

eg:第一行組成的數有 1,2,3,12,23,123

第一列組成的數有 1,4,7,12,47,147.

暴力列舉所有的數肯定是不可取的,我們試著總結。

我們發現a[x][y]在行裡出現的數對以後和的貢獻為 x*a[x][y]sigma(10 ^(n-i)) (k<=x<=n)

同理a[x][y]在列裡出現的數對以後和的貢獻為 y*a[x][y]sigma(10 ^(n-i)) (y<=x<=n)

我們設sum[x]表示第x行與第x列的數的和 然後對以上的公式進行合併

sum = sigma( i * sum[i] * ( sigma(10^k)(i<=k<=n)))(1<=i<=n)

sigma(10^k)(i<=k<=n)用到等比數列求和,有除法,需要用到逆元

a/b (mod c) == a (mod b*c)/c

或者 a*~b (mod c)

**如下:

#include

#include

#include

#include

#include

#include

#include

#include

#define pb push_back

#define mp make_pair

#define rep(i,n) for(int i=0;i=(l);--i)

#define ifor(i,h,l,v) for(int i=(h);i<=(l);i+=(v))

#define clr(vis) memset(vis,0,sizeof(vis))

#define mst(vis,pos) memset(vis,pos,sizeof(vis))

#define max3(a,b,c) max(a,max(b,c))

#define max4(a,b,c,d) max(max(a,b),max(c,d))

#define min3(a,b,c) min(a,min(b,c))

#define min4(a,b,c,d) min(min(a,b),min(c,d))

#define pi acos(-1.0)

#define inf 1000000000

#define linf 1000000000000000000ll

#define eps 1e-8

#define ll long long

using namespace std;

const int maxn = 1010;

const ll mod = 1e9+7;

char a[maxn][maxn];

ll sum[maxn];

ll multi(ll a,ll b)

return ans;

}ll quick_mod(ll a,ll b)

return ans;

}int main()

printf(%lld

,ans);

}return 0;

}

acdream 1056 (黑白染色)

題意 給你一些關係,每個關係是兩隻馬的名字,表示這兩個馬不能在乙個分組裡,問你能否將這些馬分成兩組。黑白染色,相鄰的點染不同顏色。bfs搞即可,水題。this code is made by wangzhili problem 1056 verdict accepted submission dat...

acdream1084(數論入門)

description 寒假又快要到了,不過對於lzx來說,頭疼的事又來了,因為眾多的後宮都指望著能和lzx約會呢,lzx得安排好計畫才行。假設lzx的後宮團有n個人,寒假共有m天,而每天只能跟一位後宮mm約會,並且由於後宮數量太過龐大了,而寒假的天數太少,所以lzx在寒假裡不會與乙個mm約會一次以...

ACdream 1073 雷霆戰機

中文題,根據題意做就好,判斷條件比較多,改 bug 要很久而且容易糊。學長說中文題一定要做出來,結果是最後 ac 的,中文題真的沒比英文題好做,一把心酸淚。提供乙個樣例 input 59999 1 23 8 9998 1 1 23 8 output yes 0 include include inc...