洛谷 P4950 完美數字

2021-10-03 05:27:08 字數 2226 閱讀 4347

之前的部落格中提到過cf1073e,現在重新回顧一下這種型別的題目。均是求l-r的區間中符合型別的數的和,而不是求符合型別的數的數量。

p4950 完美數字

#include

#define int long long

using

namespace std;

const

int n=10;

int t,n,m,x,now,p1,p2;

int a[n]

,g[n][1

<<10]

,f[n][1

<<10]

,inv[n]

;struct node

;node dfs

(int x,

int p,

int lead,

int limit)

;elseif(

(p&p1)

==p1 &&

(p&p2)==0

)return

(node)

;else

return

(node);}

if(!lead &&

!limit && g[x]

[p]!=-1

)return

(node)

;int h;

if(limit) h=a[x]

;else h=9;

node res,now;

res.num=res.sum=now.num=now.sum=0;

for(

register

int i=

0; i<=h;

++i)if(

(1ll

<&p2)

continue;

now=

dfs(x-

1,p|

(1ll

<,(i==h)

&&limit)

; res.num+

=now.num;

res.sum+

=now.sum;

res.sum+

=i*inv[x]

*now.num;}if

(!limit &&

!lead)

return res;

}inline

intsolve

(int x)

return

dfs(len,0,

1,1)

.sum;

}signed

main()

return0;

}

cf1073e segment sum
#include

#define int long long

using

namespace std;

const

int n=

20,mod=

998244353

;int n,m,k;

int a[n]

,g[n][1

<<10]

,f[n][1

<<10]

,inv[n]

;struct node

;node dfs

(int x,

int p,

int cnt,

int lead,

int limit)

;else

return

(node);}

if(!lead &&

!limit && g[x]

[p]!=-1

)return

(node)

;int h;

if(limit) h=a[x]

;else h=9;

node res,now;

res.num=res.sum=now.num=now.sum=0;

for(

register

int i=

0; i<=h;

++i)

else}if

(!limit &&

!lead)

return res;

}inline

intsolve

(int x)

return

dfs(len,0,

0,1,

1).sum;

}signed

main()

洛谷P1307 數字反轉

給定乙個整數,請將該數各個位上數字反轉得到乙個新數。新數也應滿足整數的常見形式,即除非給定的原數為零,否則反轉後得到的新數的最高位數字不應為零 參見樣例2 輸入格式 輸入檔名為reverse.in 輸入共1 行,乙個整數 n。輸出格式 輸出檔名為reverse.out 輸出共1行,乙個整數,表示反轉...

洛谷P2043 選擇數字

題目背景 小組內的作業題 樣例太水了 在我做這道題之前,小組內就已經有人給出了正解 於是,我就寫了乙個單調佇列,沒想到,十分輕易地過了樣例 然後就是 tcl 的 秒過樣例0分 然後就調出題解來看了看,然後進行了修改 code include include include include defin...

洛谷 P1307 數字反轉

給定乙個整數,請將該數各個位上數字反轉得到乙個新數。新數也應滿足整數的常見形式,即除非給定的原數為零,否則反轉後得到的新數的最高位數字不應為零 參見樣例2 坑點,用陣列儲存時負數只需乙個符號,還有去除前導零。include include includeusing namespace std voi...