本文共 1909 字,大约阅读时间需要 6 分钟。
Time Limit: 20 Sec
Memory Limit: 256 MB
http://www.lydsy.com/JudgeOnline/problem.php?id=1026
Input
Output
一个整数。
Sample Input
【输入样例一】
Sample Output
【输出样例一】 9 【输出样例二】 20
【数据规模和约定】
题意
题解:
代码:
//qscqesze#include #include #include #include #include #include #include #include #include #include #include #include #include #include typedef long long ll;using namespace std;//freopen("D.in","r",stdin);//freopen("D.out","w",stdout);#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)#define test freopen("test.txt","r",stdin) #define maxn 2000001#define mod 10007#define eps 1e-9int Num;char CH[20];const int inf=0x3f3f3f3f;const ll infll = 0x3f3f3f3f3f3f3f3fLL;inline ll read(){ ll x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}inline void P(int x){ Num=0;if(!x){putchar('0');puts("");return;} while(x>0)CH[++Num]=x%10,x/=10; while(Num)putchar(CH[Num--]+48); puts("");}//**************************************************************************************int l,r,dp[15][15],bit[15]; void pre(){ for(int i=0;i<=9;i++) dp[1][i]=1; for(int i=2;i<=10;i++) for(int j=0;j<=9;j++) for(int k=0;k<=9;k++) if(abs(j-k)>=2) dp[i][j]+=dp[i-1][k]; }int work(int n){ int len=0,ans=0; memset(bit,0,sizeof(bit)); while(n) { bit[++len]=n%10; n/=10; } for(int i=1;i<=len-1;i++) for(int j=1;j<=9;j++) ans+=dp[i][j]; for(int i=1;i 0;i--) { for(int j=0;j =2) ans+=dp[i][j]; if(abs(bit[i]-bit[i+1])<2) break; } return ans; } int main(){ pre(); scanf("%d%d",&l,&r); printf("%d",work(r+1)-work(l)); return 0; }
转载地址:http://wgnel.baihongyu.com/