HNOI2011 數學作業

2022-09-16 01:09:13 字數 1068 閱讀 6824

時間限制:1 s   記憶體限制:128 mb

solution:

用矩陣乘。

在向後插入數時,相當於把原答案乘10的多少次方再加上這個數,所以我們可以導成矩陣。

a矩陣                                  b矩陣

ans                            10^j     1      0

i                               0      1      1

1                               0      0      1

b矩陣第一行是把ans*10^j+i,第二行是讓i加1,第三行是保持a[3]=1.

由於10^j的j不同,所以我們應分層去求。

然後我們就可以開心地矩陣快速冪了。

注意時刻取模。

附上**:

#include#include#include#include#include#includeusing namespace std;

long long ans,a[10],b[10][10],n,mod;

void ksc(long long);

void hucheng();

void zicheng();

int main()

memset(b,0,sizeof(b));

b[1][1]=y;

b[1][2]=b[2][2]=b[2][3]=b[3][3]=1;

ksc(n-x/10+1);

printf("%lld",a[1]);

return 0;

}void ksc(long long x)

}void hucheng()

for(long long i=1;i<=3;i++)

a[i]=c[i];

}void zicheng()

for(long long i=1;i<=3;i++)

for(long long j=1;j<=3;j++)

b[i][j]=c[i][j];

}

HNOI2011 數學作業

hnoi2011 數學作業 小 c 數學成績優異,於是老師給小 c 留了一道非常難的數學作業題 給定正整數 n 和 m 要求計算concatenate 1.n mod m 的值,其中 concatenate 1.n 是將所有正整數 1,2,n順序連線起來得到的數。例如,n 13,concatenat...

HNOI2011 數學作業

我又對著跑出正解的程式調了好久 怕不是眼瞎了 這就是個分段矩陣,我們很容易就得到了遞推式 f i f i 1 10 k i 其中 k log i 於是就是分段矩陣 矩陣 之後就是 了,沒有加快速乘wa了好久 cpp include include include define re register...

HNOI2011 數學作業

小 c 數學成績優異,於是老師給小 c 留了一道非常難的數學作業題 給定正整數 n 和 m,要求計算 concatenate 1 n mod m 的值,其中 concatenate 1 n 是將所有正整數 1,2,n 順序連線起來得到的數。例如,n 13,concatenate 1 n 123456...