Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
34434 liuyile 【S】T3 C++ 通过 100 51 MS 260 KB 1373 2024-11-07 20:07:35

Tests(10/10):


#include<bits/stdc++.h> #define rep(i,a,b) for(int i=(a);i<=(b);i++) #define per(i,a,b) for(int i=(a);i>=(b);i--) #define REP(i,n) for(int i=(0);i<(n);i++) using namespace std; typedef long long ll; const int N=20,inf=1e9; int t[N],c[N],a[N],b[N]; ll num,ans; int n,m; void same(){ rep(i,1,m)if(c[i]!=c[m+1-i])return; ll res=1; rep(i,1,(m+1)/2) res*=min(9,c[i]-(i==1))-max(c[i]-9,(i==1?1:0))+1; ans+=res; } #define OUT {flag=1;break;} void doit(){ rep(n,1,m-1){ memset(a,0x3f,sizeof a); memset(b,0x3f,sizeof b); per(i,m,1) if(a[i]>inf){ int x=c[i],p=i; while(a[p]>inf){ a[p]=x; p=m+1-p; a[p]=x; if(p<=n&&b[p]>inf){ b[p]=c[p]-a[p]; b[n+1-p]=b[p]; p=n+1-p; x=c[p]-b[p]; } } } int flag=0; rep(i,1,m)if(a[i]!=a[m+1-i]||a[i]<0||a[i]>9 ||a[i]+(i<=n?b[i]:0)!=c[i])OUT rep(i,1,n)if(b[i]!=b[n+1-i]||b[i]<0||b[i]>9)OUT if(!a[1]||!b[1])flag=1; ans+=2*(!flag); } } int main(){ // freopen("palindrome.in","r",stdin); // freopen("palindrome.out","w",stdout); for(cin>>num;num;num/=10)t[++n]=num%10; REP(s,(1<<(n-1))){ rep(i,1,n)c[i]=t[i]; rep(i,1,n-1)if(s>>(i-1)&1) c[i]+=10,c[i+1]--; for(m=n;!c[m];m--); int flag=0; rep(i,1,m)if(c[i]<0||c[i]>18)OUT if(!flag)same(),doit(); } return cout<<ans<<endl,0; }


测评信息: