题目
思路
这题目前所知的唯一满分方法为打表(仅限于Pascal,C++会完美无比的爆掉!!!)。我的方法是宽搜,每回从第一位拆起,直到num<10。
代码
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std; int k=0,num1,n,a,b,c,sum=0,d,e,num2,g,i,h; void dfs(int num) { num2=0; c=0; if(num==7) sum++; if(num<10) return; while(num/10!=0) { h=num%10; num=num/10; d=num%10; e=abs(d-h); if(c!=0) c=c*10; else c=1; num2=num2+e*c; } dfs(num2); } int main() { scanf("%d%d",&a,&b); if(a>b) swap(a,b); for(i=a;i<=b+1;i++) dfs(i); printf("%d",sum); return 0; }