題意:給定乙個由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...