Link:
C:
暴力$dfs$就好了
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll n,res=0; int dgt[15],cnt; void dfs(int dep,ll sum) { if(dep==cnt){res+=sum;return;} for(int i=dep+1;i<=cnt;i++) { ll t=0; for(int j=dep+1;j<=i;j++) t=t*10+dgt[j]; dfs(i,sum+t); } } int main() { scanf("%lld",&n); for(;n;n/=10) dgt[++cnt]=n%10; reverse(dgt+1,dgt+cnt+1);dfs(0,0); printf("%lld",res); return 0; }