为什么会输出负数啊!!
查看原帖
为什么会输出负数啊!!
100151
yazzkl楼主2020/9/12 14:23
#include<bits/stdc++.h>
#define ll long long
#define ws yaz
using namespace std; 
int f[12][10]={0};
ll ws[13];
int ans,i,j;
void pw(){
	int k;
	ws[0]=1;
	for(i=1;i<=12;i++) ws[i]=ws[i-1]*10;
	for(i=0;i<=9;i++) f[1][i]=1;
		for(i=2;i<=11;i++)
			for(j=0;j<=9;j++)
				for(k=0;k<=9;k++)
					 if(abs(j-k)>=2) f[i][j]+=f[i-1][k];
}
int work(int x){
	int w=0,y,pre;
	while(ws[w]<=x) w++;
	for(i=1;i<w;i++)
		for(j=1;j<=9;j++)
			ans+=f[i][j];
	y=x/ws[w-1];
	for(j=1;j<y;j++) ans+=f[w][j];
	pre=y;
	x%=ws[w-1];
	for(i=w-1;i>=1;i--){
		y=x/ws[i-1];
		for(j=0;j<y;j++){
			if(abs(j-pre)>=2) ans+=f[i][j];
			if(abs(pre-y)<2 ) break;
			pre=y;
			x%=ws[i-1];
		}
		return ans;
		
	}

}
int main(){
	int a,b;
	cin>>a>>b;
	pw();
	cout<<work(b+1)-work(a)<<endl;
	return 0;
}

救救蒟蒻!!!

2020/9/12 14:23
加载中...