国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

數(shù)學(xué)題+倍增/數(shù)位dp

2019-11-08 20:04:07
字體:
供稿:網(wǎng)友

題面:

(題目描述中不嚴(yán)謹(jǐn),其實(shí) f() 都是正整數(shù)) 題目

分析:

f(2n)<6f(n) 可以看成 f(2n)<2(3f(n)) 由題目中第一個式子可以推出: f(2n)f(2n+1)==3f(n)3f(n)+1 由于 3f(n)3f(n)+1 是互質(zhì)的,又由于 f(2n)<2(3f(n)) 且f()都為正整數(shù),所以就可以得出 f(2n)f(2n+1)==3f(n)3f(n)+1==1{f(2n)=3?f(n)f(2n+1)=3?f(n)+1 之后用各種方法求解就行了。

代碼

倍增思想的代碼

#include <cstdio>long long n,m,ans[10000000],b[10000000],a[10000000];//a:上一步的答案(a[i]即(ans[1..x/2]%m==i)的個數(shù))//b:當(dāng)前答案(b[i]即(ans[x/2+1..x]%m==i)的個數(shù))long long f(long long x){return x==1 ? 1:(f(x/2)*3+x%2)%m;}void hehe(long long x){ if (x==1) {ans[1]=a[1]=1; return;} hehe(x/2); for (long long i=0; i<m; i++) b[i]=0; for (long long i=0; i<m; i++) b[(i*3)%m]+=a[i]; for (long long i=0; i<m; i++) b[(i*3+1)%m]+=a[i]; if (x%2==0) b[f(x+1)]--; //處理一下突出的部分 if (x%4<=1) b[f(x/2+1)]++; //同上 for (long long i=0; i<m; i++) {a[i]=b[i]; ans[i]+=a[i];}}int main(){ scanf("%lld%lld",&n,&m); hehe(n); for (long long i=0; i<m; i++)
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 连云港市| 栖霞市| 新郑市| 高雄县| 沐川县| 松潘县| 安乡县| 中超| 宜川县| 汝城县| 榆树市| 休宁县| 霍山县| 遂溪县| 什邡市| 德江县| 永顺县| 长春市| 扶沟县| 连云港市| 南平市| 花莲县| 克山县| 浦县| 沂源县| 七台河市| 河曲县| 文成县| 和平县| 平舆县| 原阳县| 同心县| 章丘市| 金门县| 山丹县| 高平市| 江都市| 故城县| 六盘水市| 镇江市| 大石桥市|