time limit: 10 sec
memory limit: 512 mb
submit: 1007
solved: 577 [
submit][
status][
discuss]
包含6個用空格分割的m,a,c,x0,n和g,其中a,c,x0是非負整數,m,n,g是正整數。
輸出乙個數,即xn mod g
11 8 7 1 5 32
一道比較水的矩陣乘法的題。很容易可以看出我們的答案是這樣得出的
然後我們在用快速冪求出前面的n次方再乘上
就行了。
需要注意的是,由於可能會在乘的時候炸掉,所以我們可以寫乙個快速乘,這樣就不用寫高精度了。
#include#include#include#define f(i,x,y) for(i=x;i<=y;++i)
#includeusing namespace std;
long long m,a,c,x0,n,g,a[2][2]=,ans[2][2],c[2][2];
bool f=true;
long long quickcheng(long long x,long long y)
return out;
}int main()
else
f(i,0,1)
f(j,0,1)
ans[i][j]=c[i][j];
}} y>>=1;
f(i,0,1)
f(j,0,1)
f(i,0,1)
f(j,0,1)
a[i][j]=c[i][j];
} out=(quickcheng(ans[0][0],x0)+ans[0][1])%m;
out=out%g;
cout<
3332 數列
題目描述 description
a[1]=a[2]=a[3]=1
a[x]=a[x-3]+a[x-1] (x>3)
求a數列的第n項對1000000007(10^9+7)取餘的值。
輸入描述 input description
第一行乙個整數t,表示詢問個數。
以下t行,每行乙個正整數n。
輸出描述 output description
每行輸出乙個非負整數表示答案
樣例輸入 sample input 3
6810
樣例輸出 sample output 4
919資料範圍及提示 data size & hint
對於30%的資料 n<=100;
對於60%的資料 n<=2*10^7;
對於100%的資料 t<=100,n<=2*10^9;
這個題和上面那個題的思路差不多。我們需要這樣乙個式子
然後就可以了。
#include#include#include#include#define f(i,x,y) for(i=x;i<=y;++i)
#define m 1000000007
using namespace std;
int t,n;
long long a[3][3]=,ans[3][3],c[3][3];
bool f=true;
int main()
else
f(i,0,2)
f(j,0,2)
ans[i][j]=c[i][j];}}
y>>=1;
f(i,0,2)
f(j,0,2)
f(i,0,2)
f(j,0,2)
a[i][j]=c[i][j];
}out=(ans[0][0]+ans[0][1]+ans[0][2])%m;
printf("%d\n",out);
} }}
bzoj2875 Noi2012 隨機數生成器
矩陣快速冪 快速乘即可。總調不出來,然後發現輸出時a寫成b了sadsadsad。include include include includeusing namespace std define rep i,s,t for int i s i t i define clr x,c memset x,...
bzoj2875 Noi2012 隨機數生成器
題目鏈結 求 矩乘板子,這裡主要講下會爆long long的整數相乘取模,我們用double可以做到 求 求出 rfloor 我們用long double搞。那麼最後的答案就是 我們直接long long搞,可以視作是在模 的意義下運算。什麼鬼嘛。可以long long搞的原因應該是這樣的。與 不同...
bzoj2876 Noi2012 騎行川藏
蛋蛋非常熱衷於挑戰自我,今年暑假他準備沿川藏線騎著自行車從成都前往拉薩。川藏線的沿途有著非常美麗的風景,但在這一路上也有著很多的艱難險阻,路況變化多端,而蛋蛋的體力十分有限,因此在每天的騎行前設定好目的地 同時合理分配好自己的體力是一件非常重要的事情。由於蛋蛋裝備了一輛非常好的自行車,因此在騎行過程...