之前的部落格中提到過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...