国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 汾阳市| 息烽县| 石嘴山市| 都安| 惠水县| 宾川县| 隆尧县| 甘肃省| 泰宁县| 佛教| 武强县| 沧源| 长顺县| 宿迁市| 宁河县| 改则县| 洛阳市| 醴陵市| 南城县| 巴楚县| 桂林市| 北辰区| 鄂托克前旗| 怀安县| 滦平县| 江口县| 酉阳| 南涧| 徐闻县| 永新县| 磐安县| 肇东市| 娄烦县| 德江县| 云霄县| 临湘市| 福州市| 宁都县| 化德县| 兰溪市| 汝州市|