Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
34363 | baka24 | 【S】T3 | C++ | 解答错误 | 0 | 2000 MS | 248 KB | 1177 | 2024-11-07 17:40:11 |
#include<bits/stdc++.h> using namespace std; #define int long long int read(){int x=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while('0'<=c&&c<='9')x=x*10+c-'0',c=getchar();return x*f;} const int N=20; int n,ans; int rev(int x){ int res=0; while(x)res=res*10+x%10,x/=10; return res; } bool check(int x){ return x>=0?rev(x)==x:0; } void slv6(){ for(int i=1;i<=n;i++)if(check(i)){ if(check(n-i))ans++;//,cout<<i<<" "<<n-i<<endl;; } printf("%lld",ans); } int m; void slv12(){ int tmp=n,tot=10; while(tmp)m++,tmp/=10; for(int i=1;i<=m/2;i++)tot*=10; for(int i=1;i<=tot;i++){ int tmp=rev(i),tmp2=tmp/10; if(i<=9&&check(n-i))ans++; if(i%10&&tmp2) for(int j=1;j*tmp2+i<=n;j*=10)if(j>i){ if(tmp2)if(check(n-(j*tmp2+i)))ans++; } if(i%10) for(int j=1;j*tmp+i<=n;j*=10)if(j>i){ if(check(n-(j*tmp+i)))ans++; } } printf("%lld",ans); } void slv(){ n=read(); if(n<=1000000)slv6(); else slv12(); // slv18(); } signed main(){ slv(); return 0; }